У меня есть следующие struct
в vector
C++ станд :: вид сопзЬ структуры
struct ub_node {
const size_t index;
const double ub_dist;
bool operator<(const ub_node &rhs) const { return ub_dist< rhs.ub_dist; }
};
Я хотел бы разобраться, что 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' имела сложный член, например. другой «вектор», а затем сортировка будет делать много копий этих 'vector' или просто изменяет ссылку? – YnkDK
Сортировка вектора 'vec' вашей структуры вызовет' swap (vec [i], vec [j]) 'много раз. Независимо от того, насколько это эффективно или много назначений ваших членов структур зависит от того, перегружен ли вы 'swap' для вашего типа, или ваш тип может быть назначен более дешевым. Если ваш класс перегружает 'swap' или следует [правило 5 или правило 0] (http://en.cppreference.com/w/cpp/language/rule_of_three), сортировка будет дешевой, без копирования. –