Je voudrais parcourir une valarray temporaire, mais cela ne fonctionne pas. Voici ma (non-travail) Code:La plage C++ pour la boucle sur valarray rvalue ne fonctionne pas
#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;
}
est Ci-dessous un exemple de travail minimum de ce que je voudrais réaliser, sauf que je ne veux pas définir un objet comme 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;
}
Mon compilateur est g ++ version 4.8.5 (Red Hat 4.8.5-4). Je compile avec le drapeau -std = C++ 0x.
J'ai essayé d'autres syntaxes telles que for (auto&& i : temp_array)
et for (int const & i : temp_array)
, mais cela ne fonctionne pas.
opérateur '' de valarray'/'est autorisé à renvoyer un proxy objet un des modèles d'expression La. – chris
J'ai été loin de C++ pendant trop longtemps, apparemment. Quelqu'un pourrait-il expliquer comment 'for (int i: temp_array) {}' est une instruction de boucle valide? Ne devrait-il pas être quelque chose comme 'for (init; end_condition; increment)'? – user1717828
@ user1717828 Voir la boucle de C++ 11 basée sur la gamme. – milleniumbug