繁体   English   中英

自动重新排序树

[英]Automatically re-sorting tree

有没有一种方法可以让树自动重新排序其元素,或者在调用某些方法时(而不是在插入新元素时)?

我想要一棵树,即一组像这样的小结构:

struct item
{
    int value;
};

集合:

set<item> items;
auto p = items.insert(...);

而且我想有一张地图,其中包含迭代器,该迭代器用于保存集合中的项目:

map<name, items::iterator> items_map;
items_map["abc"] = p.first;

一段时间后,我想在地图上进行查找,并获得指向set中保持的项目的指针以增加其值。

auto iter = items_map["abc"];
iter->value++;

现在,我希望该集合自动重新排列,使其反映更新后的值,我的意思是我希望该集合自动对其自身进行排序(或在调用某些方法之后)。

有没有办法使用STL中的当前容器执行此操作?

我想在地图上进行查找,并获取指向该项目的指针以增加其值。

有没有办法使用STL中的当前容器执行此操作?

不能std::set元素不能修改。 因此,迭代器是常量,因此您无法使用它们来修改元素。

实现类似效果的简单方法是删除旧元素,然后插入修改后的副本。 但是,任何以前指向旧元素的迭代器都将通过删除元素而无效,并且不会指向修改后的元素。

有没有一种方法可以让树自动重新排序其元素,或者在调用某些方法时(而不是在插入新元素时)?

可以,但是标准库中没有这样的结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM