Ich möchte über ein temporäres valarray iterieren, aber es funktioniert nicht. Hier ist mein (ohne Funktion) Code:C++ range-based für Schleife über Valarray rvalue funktioniert nicht
#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;
}
Nachfolgend finden Sie ein minimales Arbeits Beispiel dafür, was Ich mag würde erreichen, mit der Ausnahme, dass ich nicht ein Objekt wie temp_array
definieren will.
#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;
}
Mein Compiler ist G ++ Version 4.8.5 (Red Hat 4.8.5-4). Ich kompiliere mit dem Flag -std = C++ 0x.
Ich habe andere Syntax wie for (auto&& i : temp_array)
und for (int const & i : temp_array)
versucht, aber es funktioniert nicht.
'valarray' der' Operator/'darf ein Proxy-Objekt ein la Ausdruck Vorlagen zurückzukehren. – chris
Ich war anscheinend zu lange weg von C++. Könnte jemand erklären, wie 'for (int i: temp_array) {}' eine gültige for-Schleife-Anweisung ist? Sollte es nicht etwas wie 'for (init; end_condition; increment)' sein? – user1717828
@ user1717828 Siehe C++ 11 die bereichsbasierte for-Schleife. – milleniumbug