- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过先将列表复制到 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/
所以我有一个卡片 vector ,我正在尝试使用 random_shuffle 方法对其进行洗牌,但它并没有通过仅将第一项和最后一项传递给它来洗牌。所以我知道有第三个参数是自定义种子,它的东西,ran
我试图洗牌,但 random_shuffle 每次都产生相同的结果 void Deck::shuffle() { cout << "SHUFFLING CARDS!!!\n\n"; s
我正在测试 random_shuffle 函数模板,并能够在我的 MacBook 上生成不同的输出。但是,当我在我 friend 的 Windows 机器上尝试时,情况有所不同。 程序将尝试生成 5
以下对随机洗牌的调用始终为 vector v 提供相同的结果 #include #include #include #include using namespace std; int main
我在像这样的 vector 上使用 random_shuffle: #include vector deck; //some code to add cards to the deck here
我有一个 Blackjack 程序,它使用一个充满整数的 vector 来模拟一副纸牌: vector deck; 并用 1-10 填充它: for (int i=0; i<=4; ++i) // P
假设你需要指定范围内的随机数,传统的方法是使用ANSI C的函数random(),然后格式化结果以便结果是落在指定的范围内。但是,使用这个方法至少有两个缺点。 首先,做格式化时,结果常常是扭曲的,
我有一个包含 52 张牌的牌组向量,我想对其进行洗牌。 vector cards; 所以我用了这个: random_shuffle(cards.begin(), cards.end()); 问题是它每
我想在 C++ 中生成一个任意长度的随机数。 “合理任意”是指受主机速度和内存限制。 假设: 我想采样一个长度为 ceil(log10(MY_CUSTOM_RAND_MAX)) 的十进制数(以 10
我的任务是通过将长度为“n”的数组的每个排列“喂入”一次来测试排序算法。我应该用 random_shuffle 来做。 我知道 random_shuffle 服从均匀分布——也就是说,每个排列产生的机
这个问题在这里已经有了答案: Is random_shuffle threadsafe? and using rand_r if it is not (3 个答案) 关闭 9 年前。 在 C++11
请注意已接受的答案指出问题在于重新播种。重新播种不是原因。没有重新播种的测试在发布前产生了高相关性。见注释 1。 我在 R 中生成了 1,000,000 个均匀随机数,对序列进行排序,然后调用 std
如果标准库中的 random_shuffle 算法没有提供随机生成器函数,如果提供相同的数据,程序的连续运行会产生相同的随机序列吗? 例如,如果 std::random_shuffle(filenam
#include #include #include #include int main() { std::vector a(256); for (short x = 0; x
我正在使用带有自定义随机数生成器的 std::random_shuffle 函数,对于相同的种子,在所有编译器中返回相同的随机数序列。 但是,我担心 std::random_shuffle 可能不会在
这个问题在这里已经有了答案: 关闭9年前。 Possible Duplicate: How to make sure that std::random_shuffle always produces
我有一个来 self 创建的类的对象 vector ,每个对象包含 4 个变量:两个 double 、一个 int 和一个 bool。 int 被用作 ID 号,因此我可以跟踪 vector 中的哪个
我想使用 random_shuffle()来自 的函数, 但当我查看它时,结果发现它使用了 rand()在幕后。这可以用于洗牌吗?我的印象是 rand()不是很好的随机值来源,最好使用来自 的 M
我试图通过先将列表复制到 vector 然后返回到空列表来打乱列表。 vector tmpVector(agents_.size()); copy(agents_.begin(), agents_.e
我在没有包含的情况下写了这个并且它运行成功。srand 和 random_shuffle 在标准库中吗?是不是很奇怪? 链接 here 和 here说它们在算法库中。 #include #inclu
我是一名优秀的程序员,十分优秀!