【发布时间】:2021-05-02 18:15:26
【问题描述】:
我有这个代码:
int generatore(std::vector<bool> vettore, int *x) {
int y;
if (std::adjacent_find(vettore.begin(), vettore.end(), std::not_equal_to<>()) == vettore.end() {
return *x + 1;
}
else {
do {
y = rand() % *x;
} while (vettore.at(y) == true);
return y;
}
}
这个函数所做的基本上是获取一个 vector,它存储布尔值,表示索引是否已被使用及其 size,当它被调用时它应该返回未使用的索引或 *x+1(如果所有这些都已使用)。 用作参数的向量永远不会为空。 false 值意味着该索引尚未使用,此代码的问题是,如果所有值都等于 false,它会返回 *x+1 而不是选择一个随机索引,所以我应该只检查所有值是否等于 true,我应该改变什么?
【问题讨论】:
-
你有一个错字。在比较中
== vettore.end应该是== vettore.end()。 -
哦,谢谢,我太笨了以至于没有注意到...我在编辑中写了另一个问题,你能不能帮我解决这个问题?
标签: c++ if-statement vector error-handling