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

set的iterator只能是const的?解决方案

2012-05-14 
set的iterator只能是const的?首先,我自己实现了一个智能指针系统。然后,为了存储一系列的对象,我把智能指针

set的iterator只能是const的?
首先,我自己实现了一个智能指针系统。
然后,为了存储一系列的对象,我把智能指针存在标准库的set里:

C/C++ code
typedef SmartPointer<Object> ObjectPtr;class Foo {public:    std::set<ObjectPtr> objects;}


然后问题就来了。当我想要遍历这些对象进行某种操作的时候:
C/C++ code
for (std::set<ObjectPtr>::iterator it = objects.begin(); it != objects.end(); it++) {    ObjectPtr& curr = *it;    curr->some_method();}

发现iterator是const的。而且看set的文档,set键的iterator就强制是const的。
那么,我应当拿什么做容器?

[解决办法]
vector,list,stack多了去了。
[解决办法]
const ObjectPtr &curr = *it;
curr->some_method();


some_method声明为const,需要操作的成员声明为mutable。
[解决办法]
The value of an element in a set may not be changed directly. Instead, you must delete old values and insert elements with new values.

热点排行