gpt4 book ai didi

sorting - C++ std::const 结构的排序

转载 作者:行者123 更新时间:2023-12-02 02:06:49 24 4
gpt4 key购买 nike

我有以下structvector

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并尝试确保之后我不会更改节点。有人可以证实这一点吗?或者帮我排序?

最佳答案

As far as I understand, the const does NOT affect the execution time, but merely ensures that the programmer (me) does not do anything stupid.

正确。

对向量进行排序会交换元素,如果元素具有不可变数据,则这是不可能的(使用 ub_node 类型,你甚至无法在向量末尾以外的任何位置删除或插入元素,因为这还需要修改现有元素)。

我建议您从成员中删除 const,以便可以修改该类型,然后构建您的代码,以便程序中不应包含的部分修改为仅通过 const ub_node&const ub_node* 与类交互。

这意味着该类在必要时是可以修改的,但不会被程序中不应修改它的部分所修改。

关于sorting - C++ std::const 结构的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34046332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com