Использование объявленной переменной в цикле for с диапазоном
В приведенном ниже примере переменная 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 ответ(ов)
Причина, скорее всего, заключается в том, что это будет вызывать операции копирующего присваивания для переменной, что может стать потенциальным источником значительной неэффективности и на практике едва ли является намерением программиста... если тип вообще поддерживает копирующее присваивание.
Поэтому, вероятно, было решено запретить это.
Как удалить элемент из std::vector<> по индексу?
`unsigned int` против `size_t`: когда и что использовать?
Какова разница между "new", "malloc" и "calloc" в C++?
Что означает && в конце сигнатуры функции (после закрывающей скобки)?
Инициализация std::string из char* без копирования