读书人

LIST表 erase 困扰小弟我1天了 散分10

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

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);

读书人网 >C++

热点推荐