gpt4 book ai didi

C++ Loop 最多运行一次

转载 作者:行者123 更新时间:2023-11-28 02:33:59 24 4
gpt4 key购买 nike

我不确定为什么这个循环不会一直运行下去。我正在学习 C++,这也是我第一次使用指针。任何反馈表示赞赏。该程序的目标是取两个随机数 0-200,取差,并将其添加到 vector 中。然后得到每个数和新数的差,以此类推,直到没有更多的正数可能。

#include<iostream>
#include<stdlib.h>
#include<time.h>
#include<vector>
#include<algorithm>

int main(int argc, const char * argv[]) {
using namespace std;
int m,n; //Two random numbers between 1 and 200
vector<int> board;
vector<int>::iterator it;

srand(time(NULL));

m = rand() % 201;
n = rand() % 201;

board.insert(board.begin(), m);
board.insert(board.begin(), n);

cout << "\nThe two numbers are " << m << " and " << n << endl;


for(it=board.begin(); it != board.end(); it++){
for(vector<int>::iterator j = board.begin(); j != board.end(); j++){
int a = *j - *it;
if (a > 0) { //Is non-negative
if (find(board.begin(), board.end(), a) != board.end()) {
board.insert(board.end(), a);
}
}
}

for (it=board.begin(); it<board.end(); it++) {
cout << ' ' << *it;
cout << ' ';
}
return 0;
}
}

最佳答案

您在两个嵌套循环中使用相同的迭代器:

for(it=board.begin(); it != board.end(); it++){
// ...
for(it=board.begin(); it != board.end(); it++){
// ...
}
}

当内层循环完成后,it == board.end(),这也是外层循环的结束条件。或者,如果外层循环不会立即再次递增它——这是未定义的行为!使用不同的变量。或者使用函数。

此外,您的代码不安全还有另一个原因。这一行:

board.insert(board.end(), a);

可能会使您的所有迭代器失效 - 这会使您的循环由于不同的原因而未定义。

关于C++ Loop 最多运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28162468/

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