using namespace std;

const int kNumInts = 10;

int main(int argc, const char * argv[])
{

    vector<int> one(kNumInts);

    cout << one.size() << endl;

    for (int i = 0; i < one.size(); ++i)
    {
        one.push_back(i);
    }

    cout << one.size() << endl;

    std::cout << "Hello, World!\n";
    return 0;
}

Когда я запускаю эту программу, цикл for не завершается после 10 итераций. Это просто никогда не прекращается. Что я делаю неправильно?

c++
1
Gumbly jr. 24 Мар 2014 в 08:23
Это остановится... в конце концов.
 – 
Caleb
24 Мар 2014 в 09:36

2 ответа

Лучший ответ

Вы продолжаете нажимать элементы в векторном, и, таким образом, при проверке условия цикла for размер вектора увеличился на 1; и, таким образом, он никогда не завершается, чтобы исправить это, измените цикл for следующим образом:

for (int i = 0; i < kNumInts ; ++i)
4
rockstarr 24 Мар 2014 в 08:29
Судя по всему, ему тоже нужно назначить как one[i] = i, а не one.push_back(i).
 – 
bereal
24 Мар 2014 в 09:44

Индекс i никогда не достигает значения one.size (), потому что в то же время, когда вы добавляете элементы в вектор, его размер увеличивается на 1 каждый раз. Найдите другой способ ограничить количество элементов, которые вы хотите вставить в вектор.

0
29 Окт 2014 в 00:58