我有一个这样的 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/