为什么指向列表开头的迭代器输出第二个值?为什么a.begin()++会提前begin()并且有更好的实现?
#include#include using namespace std; //3,2,1 int main() { list
a; a.insert(a.begin(),1); cout << *(a.begin()) << endl; a.insert(a.begin(),3); cout << *a.begin()<< endl; a.insert(a.begin()++,2); list ::iterator iterator = a.begin(); iterator++; cout << *iterator << endl; return 0; }
我的输出:
1 3 3
预期产量:
1 3 2
编辑:"因为你把2放在列表的开头.请记住a.begin()++正在进行后递增,即在所有其他操作之后递增.使用++ a.begin()尝试你的代码并查看如果它符合你的期望" - @Ben
排版错误,谢谢Ben.
代码很好:
#include#include using namespace std; //3,2,1 int main() { list
a; a.insert(a.begin(),1); cout << *(a.begin()) << endl; a.insert(a.begin(),3); cout << *a.begin()<< endl; a.insert(a.begin()++,2); list ::iterator iterator = a.begin(); cout << *iterator << endl; return 0; }
输出:
1 3 2
也可以在Ideone查看.