Vorrei eseguire un'iterazione su un valarray temporaneo, ma non funziona. Qui è il mio (non funzionante) Codice:C++ range-based for loop over valarray rvalue non funziona
#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;
}
Di seguito è riportato un esempio di lavoro minima di quello che vorrei realizzare, se non che io non voglio definire un oggetto come 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;
}
Il mio compilatore è g ++ versione 4.8.5 (Red Hat 4.8.5-4). Sto compilando con il flag -std = C++ 0x.
Ho provato altre sintassi come for (auto&& i : temp_array)
e for (int const & i : temp_array)
, ma non funziona.
'' operatore di valarray'/'è permesso di tornare un proxy oggetto alla modelli di espressione. – chris
Sono stato lontano da C++ per troppo tempo, apparentemente. Qualcuno potrebbe spiegare come 'for (int i: temp_array) {}' è un'istruzione loop valida? Non dovrebbe essere qualcosa come 'for (init; end_condition; incrementare)'? – user1717828
@ user1717828 Vedere loop basato su intervallo di C++ 11. – milleniumbug