gpt4 book ai didi

C++ std::set 更新很乏味:我无法就地更改元素

转载 作者:IT老高 更新时间:2023-10-28 12:14:13 25 4
gpt4 key购买 nike

我发现 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 (我不知道它到底是如何工作的......)

最佳答案

set返回 const_iterators (标准说 set<T>::iteratorconst ,而 set<T>::const_iteratorset<T>::iterator 实际上可能是同一类型 - 请参阅 n3000.pdf 中的 23.2.4/6),因为它是有序容器。如果它返回一个常规的 iterator ,您将被允许从容器下方更改项目值,这可能会改变顺序。

您的解决方案是更改 set 中的项目的惯用方法。 .

关于C++ std::set 更新很乏味:我无法就地更改元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2217878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com