【发布时间】:2011-01-14 03:26:26
【问题描述】:
我发现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(我不知道它是如何工作的……)
【问题讨论】:
-
如果您发现使用 2 条语句已经很乏味,请创建一个内联函数。
-
KennyTM 一针见血。这样做在性能方面没有缺点,所以现在就去做吧! :-P
-
如果你写了一个更新函数,你可能想用和Boost.MultiIndex一样的方式来建模:boost.org/doc/libs/release/libs/multi_index/doc/tutorial/…
-
cplusplus.com 是一个糟糕的参考。查找语言“乏味”的各个方面,因为它看起来……很奇怪。
-
我认为这种方法的缺点是在并发处理的情况下采用读/写锁。