Я хотел бы перебирать временный valarray, но он не работает. Вот мой (нерабочий) Код:C++ диапазон для цикла по valarray rvalue не работает
#include <iostream>
#include <valarray>
int main()
{
using namespace std;
valarray<int> numerators = {99, 26, 25};
valarray<int> denominators = {9, 2, 5};
for (int i : numerators/denominators) { cout << i << ","; }
// lots of errors
return 0;
}
Ниже приведен минимальный рабочий пример того, что я хотел бы достичь, за исключением того, что я не хочу, чтобы определить объект как temp_array
.
#include <iostream>
#include <valarray>
int main()
{
using namespace std;
valarray<int> numerators = {99, 26, 25};
valarray<int> denominators = {9, 2, 5};
valarray<int> && temp_array = numerators/denominators;
for (int i : temp_array) { cout << i << ","; }
// prints 11,13,5,
return 0;
}
Мой компилятор - g ++ версия 4.8.5 (Red Hat 4.8.5-4). Я компилирую с флагом -std = C++ 0x.
Я пробовал другой синтаксис, такой как for (auto&& i : temp_array)
и for (int const & i : temp_array)
, но он не работает.
'' оператор valarray' в/'разрешено возвращать прокси-объект а-ля шаблонов выражений. – chris
Я слишком долго отсутствовал от C++. Может ли кто-нибудь объяснить, как 'for (int i: temp_array) {}' является действительным для оператора цикла? Не должно быть что-то вроде 'for (init; end_condition; increment)'? – user1717828
@ user1717828 См. Раздел C++ 11 для цикла. – milleniumbug