For循环无限循环,我不明白为什么
如果我将int i声明移到for循环之外,则for循环会正确执行。但是,如果我在for循环中声明i,则该循环将无限执行。
while (inFile >> op1 >> rNum) {
v1.push_back(rNum);
}
std::vector<int>::iterator ptr1;
for (ptr1 = v1.begin(); ptr1 != v1.end(); ptr1++) {
freq = *ptr1;
for (int i = 0; i < v1.size(); i++) {
std::cout << i << " ";
}
}
vs。
int i = 0;
while (inFile >> op1 >> rNum) {
v1.push_back(rNum);
}
std::vector<int>::iterator ptr1;
for (ptr1 = v1.begin(); ptr1 != v1.end(); ptr1++) {
freq = *ptr1;
for (i; i < v1.size(); i++) {
std::cout << i << " ";
}
}
可复制的代码:
#include <iostream>
#include <vector>
int addFunct(int& total, int& rNum);
int subFunct(int& total, int& rNum);
int main() {
char op1;
int rNum = 0;
int repeat = 0;
std::vector<int> v1;
std::vector<int> v2;
int freq = 0;
int i = 1;
std::ifstream inFile;
inFile.open("C:\\Users\\Administrator\\Desktop\\c++ files\\input.txt");
if (!inFile) {
std::cout << "oops";
}
while (inFile >> op1 >> rNum) {
v1.push_back(rNum);
}
std::vector<int>::iterator ptr1;
while (inFile >> op1 >> rNum) {
v1.push_back(rNum);
}
std::vector<int>::iterator ptr1;
for (ptr1 = v1.begin(); ptr1 != v1.end(); ptr1++) {
freq = *ptr1;
for (int i = 0; i < v1.size(); i++) {
std::cout << i << " ";
}
}
return 0;
}
无论我是在for循环内还是在for循环外声明我,for循环都应该成功执行。
答案 0 :(得分:-1)
是什么让您认为它是无限的?让我们看看您的实际情况
for each item of vector
for each item of vector
print index
这使其为O(n ^ 2)。我敢打赌,您的档案中有很多物品;而且这只需要很长时间。
证明它是微不足道的;删除文件中的大多数项目,然后重新运行。