修改 C std::set 中的元素:综合指南
虽然 std::set 擅长提供有序、唯一的值,但更新由于缺乏显式的就地 API,它的元素可能看起来很乏味
当前的方法:
常见的做法是通过迭代集合找到要修改的元素,创建它的副本,修改副本,并重新插入更新的副本,同时擦除原始副本。如问题中所述,这种方法解决了 const 迭代器的问题。
替代方案:
1。元素交换:
另一种方法是将要修改的元素与临时元素交换。这种方法被认为比复制-擦除-插入技术更有效。
auto it = finder.find(item); if (it != finder.end()) { it.swap(updated_item); }
2.使用可变集:
如果您需要频繁修改,那么实现自定义可变集可能会有所帮助。不过,这需要更深入地了解 std::set 的实现方式,一般不推荐。
3.擦除和重新插入:
如果集合的顺序不重要,则擦除并重新插入修改的元素仍然是有效的解决方案。然而,这种方法比复制-擦除-插入方法更有效,因为它避免了创建副本。
结论:
修改 std 中元素的具体方法::设置取决于具体要求和权衡。元素交换方法提供了更好的效率,而可变集提供了更大的灵活性。当维持秩序至关重要时,原始的复制-擦除-插入方法仍然是一个实用的解决方案。
以上是如何有效地修改 C std::set 中的元素?的详细内容。更多信息请关注PHP中文网其他相关文章!