有没有办法让树自动重新排序其元素,或者在调用某个方法时(不是在插入新元素时)?
我想要一棵树,即一组像这样的小结构:
struct item
{
int value;
};
集合:
set<item> items;
auto p = items.insert(...);
我希望有一个地图将迭代器保存到set:
中的项目中map<name, items::iterator> items_map;
items_map["abc"] = p.first;
过了一段时间后,我想在地图上进行查找并获取指向set中项目的指针以增加其值。
auto iter = items_map["abc"];
iter->value++;
现在我希望设置自动重新排列以便它反映更新的值,我的意思是我希望设置自动排序(或者在调用某些方法之后)。
有没有办法在STL中使用当前容器?
答案 0 :(得分:0)
我想在地图上进行查找并获取指向set中项目的指针以增加其值。
有没有办法在STL中使用当前容器?
没有。 std::set
的元素可能无法修改。因此,迭代器是常量,您无法使用它们来修改元素。
实现类似效果的简单方法是删除旧元素,并插入修改后的副本。但是,任何用于指向旧元素的迭代器当然会因删除元素而失效,并且不会指向修改过的元素。
有没有办法让树自动重新排序其元素,或者在调用某个方法时(不是在插入新元素时)?
当然,但标准库中没有这样的结构。