本篇学习forward_list的迭代器操作:
before_begin:返回指向第一个元素之前迭代器
cbefore_begin:返回指向第一个元素之前常量迭代器
begin:返回指向起始的迭代器
cbegin:返回指向起始的常迭代器
end:返回指向末尾的迭代器
cend:返回指向末尾的常量迭代器
代码实现
#include <iostream>
#include <forward_list>
using namespace std;
void getIterator()
{
forward_list<int> list1 = {12, 32, 34 ,53, 56, 76, 78};
//1.before_begin返回指向第一个元素之前的迭代器
forward_list<int>::iterator before_begin = list1.before_begin();//可以用auto
cout << " before_begin = " << *(std::next(before_begin)) << endl;
//2.cbefore_begin返回指向第一个元素之前的常量迭代器
forward_list<int>::const_iterator cbefore_begin = list1.cbefore_begin();
cout << " cbefore_begin = " << *(std::next(cbefore_begin)) << endl;
//3.begin返回指向起始的迭代器
forward_list<int>::iterator begin = list1.begin();//可以用auto
cout << " begin = " << *begin << endl;
//4.cbegin返回指向起始的迭代器
forward_list<int>::const_iterator cbegin = list1.cbegin();//可以用auto
cout << " cbegin = " << *cbegin << endl;
*begin = 50;
cout << " begin = " << *begin << endl;
//*cbegin = 60;//常量迭代器不能修改
//5.end返回指向末尾的迭代器
forward_list<int>::iterator end = list1.end();//可以用auto
auto st1 = list1.begin();
int a = 5;
cout << " list1的值为: ";
while (st1 != end) {
cout << *st1 << "\t";
*st1 = *st1 + a;
++st1;
}
cout << endl;
//6.cend返回指向末尾的常量迭代器
forward_list<int>::const_iterator cend = list1.cend();//可以用auto
auto st2 = list1.cbegin();
int a2 = 7;
cout << " list1的值为: ";
while (st2 != cend) {
cout << *st2 << "\t";
//*st2 = *st2 + a2;//常量不能赋值
++st2;
}
cout << endl;
}
int main()
{
getIterator();
cout << endl;
cout << " Hello World!" << endl;
return 0;
}
运行结果:
注意:forward_list的迭代器都不支持自减操作
参考:
https://zh.cppreference.com/w/cpp/container/forward_list
http://www.cplusplus.com/reference/forward_list/forward_list/