[英]c++ sort vector of pair objects, compile error asking for operator “=”
我有一個這樣的向量:
vector<pair<const MyObj&, MyStrut>> alls;
當我做
swap(alls[0], alls[1]);
它抱怨
二進制“=”:未找到采用“_Ty”類型的左側操作數的運算符(或沒有可接受的轉換
為什么?
在嘗試交換您的pair
的過程中,它本質上是在嘗試從const
引用分配給const
引用。 你不能重新綁定一個引用,所以它唯一能做的就是交換每個引用所引用的對象。 但是由於這些是const
引用,所以即使這樣也是不可能的。
如果您認為需要在數據結構中存儲引用並以任何方式操作包含它的結構,通常情況下您實際上想要存儲某種類型的指針(例如std::shared_ptr
),它允許您將其存儲在數據結構中並在數據結構中重新分配(例如swap
)它,同時在其他地方仍然擁有指向它的指針(以保留您所依賴的“參考性”)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.