3

这是一段简单的代码,它给了我错误的输出,但我不知道为什么。

#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
}

我该如何解决?

4

1 回答 1

8

.end()返回一个迭代器,该迭代器引用列表容器中的最后一个元素。最后一个元素是列表容器中最后一个元素之后的理论元素。它不指向任何元素,因此不应被取消引用。

使用frontback成员函数

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

检查此链接

于 2013-04-02T03:58:28.847 回答