迭代器
行为类似于指针,迭代器也提供了对对象进行间接访问
所有标准库容器都支持迭代器,string 不属于容器但也支持迭代器
- 使用迭代器
auto start = v.begin();//第一个元素的迭代器
auto end = v.end();//尾后迭代器(尾元素的下一个位置)
通过迭代器修改元素,效果与引用或指针一样
迭代器也可以通过递增操作实现访问下一元素,最多移动到尾后迭代器
迭代器判断使用!=
void test()
{
vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
v.push_back(50);
for (auto it = v.begin(); it != v.end(); it++)
{
cout << *it << endl; //类似指针解引用,箭头运算符也可以使用
}
}
- 迭代器类型
- iterator
可读可写 const_iterator
(类似于指针常量)
可读不可写cbegin
和cend
返回const_iterator
类型
使用了迭代器的循环体,就不能再向迭代器所属的容器中添加元素,否则会导致迭代器失效
- iterator