迭代器 iterator
迭代器 iterator
迭代器遍历 Vector
vector<int> vec = {100, 200, 300};
vector<int>::iterator iter; // 定义迭代器
// 迭代器 begin() / end(),反向迭代器 rbegin() / rend()
int main()
{
vector<int> vec = {100, 200, 300};
vector<int>::iterator iter; // 定义迭代器
// 如果容器中有元素,则 begin 返回的迭代器,指向的是容器中的第一个元素 ==> 相当于 iter 执行了 vec[0]
iter = vec.begin();
// end 返回的迭代器指向的并不是末端元素,而是末端元素的后边,类似与一个标记
iter = vec.end();
// 如果一个容器为空,那么 begin() 和 end() 返回的迭代器相同
return 0;
}
正逆遍历
int main()
{
vector<int> vec = {100, 200, 300};
// 正向遍历:iterator
for(vector<int>::iterator iter = vec.begin(); iter != vec.end(); iter++){
cout << *iter << endl;
}
// 逆向遍历:reverse_iterator
for(vector<int>::reverse_iterator riter = vec.rbegin(); riter != vec.rend(); riter++){
cout << *riter << endl;
}
return 0;
}
将对象放入容器中
vector<student> stu;
student mystu;
mystu.num = 100;
stu.push_back(mystu); // 将对象放入到容器中
vector<student>::iterator iter;
iter = stu.begin(); // 指向第一个元素
cout << (*iter).num << endl;
cout << iter->num << endl;
const_iterator 迭代器
表示值不能改变的意思
- 这个迭代器指向的元素的值不能改变
- 而不是表示这个迭代器本身不能改变,也就是说,迭代器本身是可以不断指向下一个元素
- 只能从容器中读取元素,不能通过这个迭代器改写容器中的元素,感觉更像是常量指针