对对象的c ++排序向量,编译错误,要求运算符“ =”

我有一个像这样的向量:

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

当我这样做

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

它抱怨

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

为什么?

bsxs121 回答:对对象的c ++排序向量,编译错误,要求运算符“ =”

在尝试交换pair的过程中,它本质上是在尝试从const引用分配到const引用。您不能重新绑定引用,因此可以想象的唯一事情是交换每个引用所引用的对象。但是由于这些是const引用,所以甚至是不可能的。

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

本文链接:https://www.f2er.com/3162781.html

大家都在问