读书人

c++ list容器的有关问题

发布时间: 2013-04-02 12:35:26 作者: rapoo

c++ list容器的问题

#include <iostream>
#include <list>
using namespace std;
int main()
{
list<int> lis;
for(size_t ix = 1; ix <= 4; ix++)
{
lis.insert(lis.begin(),ix);//在链表欠一次插入元素
}
list<int>::iterator it1 = lis.begin(),it2 = lis.end();//声明迭代器
//问题来了,现在我想输出it1 it2指向的空间地址怎么办
cout<<it1<<" "<<it2<<endl;//报错
cout<<lis.begin()<<" "<<lis.end()<<endl;//居然也报错
//求解
}

改下


for(list<int>::iterator it1 = lis.begin(); it1 != lis.end(); ++it1) {
cout << &it1 << " " << endl;
}

[解决办法]
好像还是有问题,上面的方法显示的地址一样

cout << &it1.begin() << endl;
cout << &it1.rbegin() << endl;

不过调试查看这内存地址,又没有存储指向的数值
[解决办法]
    list<int> lis;
for(size_t ix = 1; ix <= 4; ix++)
{
lis.insert(lis.begin(),ix);//在链表欠一次插入元素
}
list<int>::iterator it1 = lis.begin(),it2 = lis.end();// 声明迭代器 it2指向的是最后一个元素的下一个(是一个无效位置,不能访问,只是做哨兵使用)
//问题来了,现在我想输出it1 it2指向的空间地址怎么办
cout<< &(*it1) <<endl; // it1是迭代器对象,不能直接cout输出,先用*解引用取到对象,然后再用&取对象地址,
cout<< &(*lis.begin()) <<endl;// 这个同理

读书人网 >C++

热点推荐