| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 399 人关注过本帖
标题:一个关于C++中list的问题
只看楼主 加入收藏
lxqlyld
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:116
专家分:125
注 册:2012-6-18
结帖率:85.29%
收藏
已结贴  问题点数:20 回复次数:4 
一个关于C++中list的问题
请问各位高手,怎样将链表list中的内容用cout输出以及怎样访问list中的内容,最好帮举个例子,非常感谢啊
我的这个问题是我在做一个习题时遇到的:
int ia[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 55, 89 };
list<int> ilist( ia, ia+11 );
用单个iterator 形式的erase()删除ilist 中所有奇数位置的元素。
程序写到最后,不知道该怎么访问ilist中的元素,卡住了

[ 本帖最后由 lxqlyld 于 2012-7-13 09:06 编辑 ]
搜索更多相关主题的帖子: 位置 元素 最好 
2012-07-12 17:03
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:5 
list只是一个链表而已

比如说
std::list<int> listInt;
listInt.push_back(1);
listInt.push_back(2);
listInt.push_back(3);

for(std::list<int>::iterater itr = listInt.begin(); itr != listInt.end(); ++itr)
{
cout << *itr;
}

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2012-07-12 20:02
lxqlyld
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:116
专家分:125
注 册:2012-6-18
收藏
得分:0 
回复 2楼 peach5460
这样的输出好像是不对的,我在书上看到,iterator 算术运算只适用于vector 或deque, 而不适用于list ,因为list 的元素在内存中不
是连续存储的,例如
ilist.begin() + 2;是错误的。
2012-07-13 09:05
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:5 
程序代码:
void Test21()
{
    std::list<int> listInt;
    listInt.push_back(1);
    listInt.push_back(2);
    listInt.push_back(3);

    for (std::list<int>::iterator itr = listInt.begin(); itr != listInt.end(); ++itr)
    {
        cout << *itr << endl;
    }
}


以上代码在VS2008中编译通过,运行正确

STL连联表基本算法都搞不定就白活啦

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2012-07-13 10:58
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
回复 3楼 lxqlyld
peach5460 说得是正确的

程序代码:
#include <iostream>
#include <iterator>
#include <list>
#include <algorithm>
using namespace std;

int main()
{
    int ia[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 55, 89 };
    list<int> ilist( ia, ia+sizeof(ia)/sizeof(ia[0]) );

    int i = 1;
    for( list<int>::iterator itor=ilist.begin(); itor!=ilist.end(); ++i )
    {
        if( i&1 )
            itor = ilist.erase( itor );
        else
            ++itor;
    }

    copy( ilist.begin(), ilist.end(), ostream_iterator<int>(cout,", ") );
    cout << endl;

    return 0;
}

输出
1, 2, 5, 13, 55,
2012-07-13 13:41
快速回复:一个关于C++中list的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031234 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved