我发现更新操作std::set
乏味,因为没有这样的 API参考参数 http://en.cppreference.com/w/cpp/container/set。所以我目前所做的是这样的:
//find element in set by iterator
Element copy = *iterator;
... // update member value on copy, varies
Set.erase(iterator);
Set.insert(copy);
基本上迭代器返回Set
is a const_iterator
并且你不能直接改变它的值。
有一个更好的方法吗?或者也许我应该重写std::set
通过创建我自己的(我不知道它到底是如何工作的..)
set
回报const_iterators
(标准说set<T>::iterator
is const
, 然后set<T>::const_iterator
and set<T>::iterator
事实上可能是相同的类型 - 请参阅 n3000.pdf 中的 23.2.4/6),因为它是一个有序容器。如果它返回一个常规的iterator
,您可以从容器下更改项目值,这可能会改变顺序。
您的解决方案是更改项目中的惯用方法set
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)