01/10/2018, 01:00

Hỏi về hàm advance trong C++?

Hi mọi người,

Hôm nay mình có đọc 1 reference về list trên trang CPlusPlus (link)
Thì họ có 1 đoạn code như sau:

// erasing from list
#include <iostream>
#include <list>

int main ()
{
  std::list<int> mylist;
  std::list<int>::iterator it1,it2;

  // set some values:
  for (int i=1; i<10; ++i) mylist.push_back(i*10);

                              // 10 20 30 40 50 60 70 80 90
  it1 = it2 = mylist.begin(); // ^^
  advance (it2,6);            // ^                 ^
  ++it1;                      //    ^              ^

  it1 = mylist.erase (it1);   // 10 30 40 50 60 70 80 90
                              //    ^           ^

  it2 = mylist.erase (it2);   // 10 30 40 50 60 80 90
                              //    ^           ^

  ++it1;                      //       ^        ^
  --it2;                      //       ^     ^

  mylist.erase (it1,it2);     // 10 30 60 80 90
                              //        ^

  std::cout << "mylist contains:";
  for (it1=mylist.begin(); it1!=mylist.end(); ++it1)
    std::cout << ' ' << *it1;
  std::cout << '
';

  return 0;
}

Mình có thắc mắc là không biết cái hàm advance() ở đâu ra, vì khi viết thử hàm này lên VS2015 thì nó không có hàm nào như thế cả:

Nhìn qua thì biết hàm đó dịch vị trí con trỏ iterator it2 đến 6 nhưng trong VS2015 lại không có hàm này ! (hay có thư viện riêng hỗ trợ cho nó nhỉ ?)
Giúp mình nhé !

Cảm ơn mọi người

Nguyễn Văn Tâm viết 03:14 ngày 01/10/2018

Bạn thêm#include <iterator> xem được không

X viết 03:11 ngày 01/10/2018

Search advance c++ là ra ngay ấy mà :v
http://en.cppreference.com/w/cpp/iterator/advance

Người bí ẩn viết 03:03 ngày 01/10/2018

@sanegan199x @david15894 Ừm, mà sao cái example code của CPlusPlus mình post ở trên nó lại không #include <iterator> nhỉ ?

Bài liên quan
0