c ++中指针列表中的最后一个元素

时间:2013-04-02 03:50:25

标签: c++ list pointers stl

这是一段简单的代码,它给了我错误的输出,但我无法弄清楚原因。

#include <iostream>
#include <list>
using namespace std;

void main(){
    list<int*> l;
    int x = 7;
    int* y = &x;
              //it works if I put    list<int*> l;   on this line instead.
    l.push_back(y);
    cout << **l.end() << endl;   // not 7
}

我该如何解决?

1 个答案:

答案 0 :(得分:8)

.end()返回一个迭代器,引用列表容器中的past-the-end元素。过去的结束元素是跟随列表容器中最后一个元素的理论元素。它没有指向任何元素,因此不应被解除引用。

使用frontback成员函数

cout << *l.front() << endl;   
cout << *l.back() << endl;

Check this link