(学习日志)
参考博客:
链接1: link
链接2: link
迭代器是一种检查容器内元素并遍历元素的数据类型,通常用于对C++中各种容器内元素的访问,但不同的容器有不同的迭代器,初学者可以将迭代器理解为指针;
容器则是像是STL的vector,list,map等
迭代器(iterator)是一种可以遍历容器元素的数据类型。迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。C++更趋向于使用迭代器而不是数组下标操作,因为标准库为每一种标准容器(如vector、map和list等)定义了一种迭代器类型,而只有少数容器(如vector)支持数组下标操作访问容器元素。可以通过迭代器指向你想访问容器的元素地址,通过*x打印出元素值。这和我们所熟知的指针极其类似。
vector,是数组实现的,也就是说,只要知道数组的首地址,就能访问到后面的元素。所以,我们可以通过访问vector的迭代器来遍历vector容器元素。
List,是链表实现的,我们知道,链表的元素都存储在一段不是连续的地址空间中。我们需要通过next指针来访问下一个元素。那么,我们也可以通过访问list的迭代器来实现遍历list容器元素。
有了迭代器,不需要格外写一些算法便能快速简单的完成一些操作
不同的容器,它们的迭代器也是不同的,但是它们的迭代器功能是一样的。
容器都有成员begin和end,其中begin成员复制返回指向第一个元素的迭代器(用*迭代器打印出元素值),而end成员返回指向容器尾元素的下一个位置的迭代器,它是一个不存在的元素位置。
迭代器定义:
std::vector ::iterator it; //it能读写vector的元素
std::vector::const_iterator it;//it只能读vector的元素,不可以修改vector中的元素
for (vector::iterator it = vtr.begin(); it != vtr.end(); ++it)
或是:
std::vector::const_iterator it;
for( it = vector.begin(); it != vector.end(); it++ )