簡體   English   中英

c++ 對對象的排序向量,編譯錯誤要求運算符“=”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM