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

LIST表 erase 困扰小弟我1天了 散分100分 求大牛解答

2013-04-02 
LIST表 erase 困扰我1天了 散分100分 求大牛解答本帖最后由 baddy1211 于 2013-03-29 08:49:36 编辑编译环

LIST表 erase 困扰我1天了 散分100分 求大牛解答
本帖最后由 baddy1211 于 2013-03-29 08:49:36 编辑 编译环境为 :CentOS 5.5
编辑器为:gcc/g++

在头文件定义了
typedef std::list<unsigned int> CACHE_LST;
CACHE_LST   cache_list_;
然后项目中
cache_list_ 用push_back()增加了一些数字测试

测试删除元素的时候 发现问题
cache_list_.erase(cache_list_.begin()+1);
提示
no match for 'operator+’ in‘xxx::cache_list_.std::list<_Tp, _Alloc>::begin [with _Tp = unsigned int, _Alloc = std::allocator<unsigned int>]() + 1
这个问题是说没有重载+号这个操作符
cache_list_.erase(cache_list_.begin()); 这个是没问题
网上查了资料
erase是可以(x.begin()+1,x.begin()+2); 这样操作的

小弟不才 对list表不是很懂 求大人解答是什么问题?

分数不多 散分100分 求解答

追加:
erase需要iterator参数
于是构建
CACHE_LST::iterator iter =cache_list_.begin();
请问 指定某个区域间的元素  iter 应该如何写

[解决办法]
那就定义迭代器,然后再迭代器上可以自增操作++。

CACHE_LST   cache_list_;

    cache_list_.push_back(1);
    cache_list_.push_back(2);
    cache_list_.push_back(3);
    cache_list_.push_back(4);
    CACHE_LST::iterator it = cache_list_.begin();
    cache_list_.erase(++it);

[解决办法]
引用:
那就定义迭代器,然后再迭代器上可以自增操作++。
C/C++ code?12345678CACHE_LST   cache_list_;     cache_list_.push_back(1);    cache_list_.push_back(2);    cache_list_.push_back(3);    cache_list_.push_back(4); ……

档上说的好,迭代器只能++,不能加1.
[解决办法]
引用:
本帖最后由 baddy1211 于 2013-03-29 08:49:36 编辑
            编译环境为 :CentOS 5.5
编辑器为:gcc/g++

在头文件定义了
typedef std::list<unsigned int> CACHE_LST;
CACHE_LST   cache_list_;
然后项目中
cache_lis……
list的迭代器只支持++和--,不支持+多少这种随机访问
[解决办法]
1L,2L说了原因,解决办法:std::advance

   std::list<int> l(5,8);
   std::list<int>::iterator it = l.begin();
   std::advance(it, 4);
   l.erase(it);

热点排行