首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++ list容器的有关问题

2013-04-02 
c++ list容器的问题#include iostream#include listusing namespace stdint main(){listint lisfo

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

热点排行