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;// 这个同理