当前位置:  开发笔记 > 编程语言 > 正文

迭代器begin()应该包含3,输出说2?

如何解决《迭代器begin()应该包含3,输出说2?》经验,为你挑选了1个好方法。

为什么指向列表开头的迭代器输出第二个值?为什么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.



1> gsamaras..:

代码很好:

#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查看.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有