gpt4 book ai didi

c++ - 为什么此 C++ 代码不起作用 - 尝试删除集合中的元素时常量引用错误

转载 作者:行者123 更新时间:2023-11-27 23:49:15 24 4
gpt4 key购买 nike

我正在学习 C++ 并试图从 map 中删除一些东西。在这个映射中是 T 的一个键和一组节点。有一个与“const”相关的错误,但我不知道如何正确解决它。

我认为相关的错误消息是这样的:“/usr/include/c++/5/bits/STL_algo.h:868:23: error: passing 'const Node >' as 'this' argument discards qualifiers [-fpermissive ]”

我玩过 std::pair 并尝试复制集合并修改它,但那没有用。

我想循环映射并检查集合是否有节点 n(参数)并将其删除。

这是代码的相关部分:

void removeFromAdjacenceList(Node<T> n) {
//std::map<T, std::set<Node<T>>> adjazenzliste;
for (auto it = this->adjazenzliste.begin(); it != this->adjazenzliste.end(); ++it) {
it->second.erase(std::remove(it->second.begin(), it->second.end(), n), it->second.end());
}

}

最佳答案

reference 中所述,您不能对关联容器使用删除-删除习惯用法。 :

These algorithms cannot be used with associative containers such as std::set and std::map because ForwardIt does not dereference to a MoveAssignable type (the keys in these containers are not modifiable)

幸运的是,无论如何您都不需要为您的用例调用removeset 只能包含唯一的键,因此您可以对要从集合中删除的特定键调用 erase

关于c++ - 为什么此 C++ 代码不起作用 - 尝试删除集合中的元素时常量引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47848704/

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