gpt4 book ai didi

c++ - random_shuffle 列表通过将它复制到一个 vector 然后返回

转载 作者:行者123 更新时间:2023-11-30 01:59:58 25 4
gpt4 key购买 nike

我试图通过先将列表复制到 vector 然后返回到空列表来打乱列表。

vector<Agent*> tmpVector(agents_.size());
copy(agents_.begin(), agents_.end(), tmpVector.begin());
random_shuffle(tmpVector.begin(), tmpVector.end());
agents_.clear();
copy(tmpVector.begin(), tmpVector.end(),agents_.begin());

程序因运行时错误而崩溃:list iterator not dereferencable

1- 代码有什么问题。

2- 列表包含指针。我假设如果上述方法有效(因为指针值不会改变并且分配的变量以后仍然可以用它们引用)不会出错,对吧?

谢谢。

最佳答案

我认为问题出在这两行:

agents_.clear();
copy(tmpVector.begin(), tmpVector.end(),agents_.begin());

第一行清除了 agents_列表,所以它现在是空的。然后下一行尝试替换存储在 agents_ 中的元素序列。从内容在 [tmpVector.begin(), tmpVector.end()) 范围内的第一个元素开始.这会导致未定义的行为,因为列表中没有元素。

要解决此问题,请尝试删除对 agents_.clear() 的调用从上一行。这将导致 copy调用以覆盖 agents_ 中的现有元素列出适当打乱的值。

希望这对您有所帮助!

关于c++ - random_shuffle 列表通过将它复制到一个 vector 然后返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15607823/

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