无限For循环变量声明问题

时间:2019-07-18 14:05:10

标签: c++ vector

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循环都应该成功执行。

1 个答案:

答案 0 :(得分:-1)

是什么让您认为它是无限的?让我们看看您的实际情况

for each item of vector
     for each item of vector
         print index

这使其为O(n ^ 2)。我敢打赌,您的档案中有很多物品;而且这只需要很长时间。

证明它是微不足道的;删除文件中的大多数项目,然后重新运行。