我发现在std::set
上进行更新操作很繁琐,因为cppreference上没有这样的API。所以我目前所做的是:
//find element in set by iterator
Element copy = *iterator;
... // update member value on copy, varies
Set.erase(iterator);
Set.insert(copy);
基本上,Set
返回的迭代器是 const_iterator
类型的,你不能直接修改它的值。
有更好的方法吗?或者我应该通过创建自己的std::set
来覆盖它(但我不知道它的工作原理..)
insert
提供一个提示迭代器,那么这将更有效率。最简单的方法似乎是set.insert(set.erase(oldItem),newItem)
。 - Tim Sylvester