0

Использование объявленной переменной в цикле for с диапазоном

10

В приведенном ниже примере переменная i имеет область видимости функции. Однако я не могу использовать i во втором цикле for. Почему for (i : v1) не работает, в то время как for (int i : v1) работает?

#include <iostream>
#include <string>
#include <vector>

int main()
{
    std::vector<int> v1;
    int i;
    while(std::cin >> i)
    {
        v1.push_back(i);
    }

    for(i : v1) // for (int i : v1) работает
        std::cout << i << "\t";
    std::cout << std::endl;
    return 0;
}

В чем проблема? Как правильно использовать переменную цикла в данном контексте?

1 ответ(ов)

0

Причина, скорее всего, заключается в том, что это будет вызывать операции копирующего присваивания для переменной, что может стать потенциальным источником значительной неэффективности и на практике едва ли является намерением программиста... если тип вообще поддерживает копирующее присваивание.

Поэтому, вероятно, было решено запретить это.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь