我已經在一個vector
C++的std ::排序常量結構
struct ub_node {
const size_t index;
const double ub_dist;
bool operator<(const ub_node &rhs) const { return ub_dist< rhs.ub_dist; }
};
以下struct
我想那種vector
。我試過使用std::sort
但我得到一個編譯錯誤: error: use of deleted function ‘ub_node& ub_node::operator=(ub_node&&)’
參考我所在的行std::sort(result.begin(), result.end());
,其中result
的類型爲vector<ub_node>
。
據我瞭解,在const
確實不影響執行時間,而只是確保程序員(我)不會做任何愚蠢的事。如果是這種情況,我可能會刪除const
並嘗試確保我以後不更改節點。有人能證實這一點嗎?還是幫我排序呢?
這是暗示,如果我的'struct'有一個複雜的成員,例如另一個'矢量',然後排序這將會使這些'矢量'的副本很多,或者它只是改變參考? – YnkDK
對結構的向量'vec'進行排序會'多次調用'swap(vec [i],vec [j])。無論是高效還是對結構成員進行大量賦值都取決於您是否爲您的類型重載了'swap',或者您的類型是否可以低成本地運行_move assigned_。如果您的類重載'swap'或遵循[五的規則或零規則](http://en.cppreference.com/w/cpp/language/rule_of_three),那麼對它進行排序將很便宜,不需要複製。 –