Chciałbym iterować nad tymczasową valarray, ale to nie działa. Oto mój (bez pracy) Kod:C++ w oparciu o zakres dla pętli nad wartością valarray nie działa
#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;
}
Poniżej jest przykład minimalny pracy, co chciałbym osiągnąć, oprócz tego, że nie chcę, aby określić przedmiot jak 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;
}
Mój kompilator jest w wersji g ++ 4.8.5 (Red Hat 4.8.5-4). Kompiluję się z flagą -std = C++ 0x.
Próbowałem innych składni, takich jak for (auto&& i : temp_array)
i for (int const & i : temp_array)
, ale to nie działa.
'valarray' za' operator/'może powrócić proxy obiekt a la szablony ekspresji. – chris
Najwyraźniej nie było mnie zbyt długo w C++. Czy ktoś mógłby wyjaśnić, w jaki sposób 'for (int i: temp_array) {}' jest poprawną instrukcją pętli for? Czy nie powinno to być coś takiego jak 'for (init; end_condition; increment)'? – user1717828
@ user1717828 Zobacz pętlę C++ 11 dla zasięgu. – milleniumbug