对对象的 c++ 排序 vector ,编译错误要求运算符 "="

标签 c++ sorting vector

我有一个这样的 vector :

vector<pair<const MyObj&, MyStrut>> alls;

当我做的时候

swap(alls[0], alls[1]);

它提示

二进制“=”:未找到采用“_Ty”类型的左手操作数的运算符(或没有可接受的转换

为什么?

最佳答案

在尝试交换您的的过程中,它本质上是在尝试将const 引用分配给const 引用。您无法重新绑定(bind)引用,因此唯一可以想到的就是交换每个引用引用的对象。但由于这些是 const 引用,所以即使那样也是不可能的。

如果您认为需要在数据结构中存储引用并以任何方式操作包含它的结构,通常情况下您实际上想要存储某种指针(例如 std::shared_ptr ) 这将允许您将它存储在数据结构中并在数据结构中重新分配(例如 swap)它,同时在其他地方仍然拥有指向它的指针(以保留“引用性”你所依赖的)。

关于对对象的 c++ 排序 vector ,编译错误要求运算符 "=",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58703360/

相关文章:

c++ - 对 boost::gregorian::greg_month::as_short_string() const 的 undefined reference

php - 如何对列 id 和列名称进行排序

c++ - 在 C++ 中的 vector 中存储具有双重继承的对象

java - 是否有人仍在使用 Vector(而不是 Collections.synchronizedList(List list)/CopyOnWriteArrayList)?

c++ - 有没有办法找到任意类类型的直接基类(如果有的话)?

c++ - 使用 static_assert 确保模板参数只*最多*一次使用

c - 快速排序运行时速度问题

python - 按字母顺序对列表进行排序(数字在小写字母前面,在大写字母前面

c++ - 在一行中初始化一对 vector

C++ - 否则返回 Elseif