迭代器
迭代器(iterator)是一种检查容器内元素并遍历元素的数据类型。c++标准库为每种标准容器定义了一种迭代器类型。
容器的iterator类型
每个标准库容器类型都定义了一个名为iterator的成员,如:
vector<int>::iterator iter;
这条语句就定义了一个名为iter的变量,其数据类型是由vector<int>定义的iterator类型
我们已经定义了一个vector<int>定义的iterator类型的iter,接下来就是访问容器中的元素,首先定义一个容器变量
vector<int> ivec;
每种容器中都定义了一对命名为begin和end的函数,用于返回迭代器。begin返回的迭代器指向第一个元素,end返回的迭代器指向
“末端元素的下一个”,通常称为超出末端迭代器。这样定义的好处在于:当begin和end返回的迭代器相等时即说明容器为空,否则不然,可判断容器是否为空。
vector<int>::iterator iter = ivec.begin();
vector<int>::iterator iter2 = ivec.end();
上面的iter只是指向ivec[0](即指向ivec的第一个元素),类似与指针,变量名只是指向元素的地址而非元素的值。故可用解引用来访问迭代器所指向的元素。
*iter = 2;
应值得注意的是iter2是不能进行解引用操作,因为end返回的迭代器并不指向任何元素。
迭代器的常用操作
*iter 返回迭代器iter所指向的元素的引用
iter->men 对iter进行解引用,获取制定元素中名为men的成员
++iter / iter++ 自增,使其指向容器里的下一个元素
--iter / iter-- 自减, 使其指向容器里的前一个元素
iter1 == iter2 两个迭代器相等,当两个迭代器指向同一个容器中的同一个元素,或者当它们都指向同一个容 器的超出末端的下一个位置时,两个迭代器相等。
iter1 != iter2 两个迭代器不相等
第一次写博客,只能到这里了,在接下去就还不是很懂,如有错误,请一定指出,见谅!