In c++11 kann Initialisierungslisten zum Initialisieren von Parametern in Funktionen verwendet werden. Was ist der Zweck davon? Kann das nicht mit konstanten Vektoren gemacht werden? Was ist der Unterschied der beiden unten aufgeführten Programme?Initialisierungsliste vs. Vektor
Verwendung Initialisiererliste:
#include <iostream>
using namespace std;
int sumL(initializer_list<int> l){
int sum = 0;
for (const auto i: l){
sum += i;
}
return sum;
}
int main(){
cout << sumL({1, 2, 3}) << "\n";
return 0;
}
const Vektor unter Verwendung von:
#include <iostream>
#include <vector>
using namespace std;
int sumV(const vector<int> l){
int sum = 0;
for (const auto i: l){
sum += i;
}
return sum;
}
int main(){
cout << sumV({1, 2, 3}) << "\n";
return 0;
}
Der zweite Code erfordert mehr als benötigt (und der Vektor wird auch mit einer Initialisiererliste erstellt) –
Offtopic: Beachten Sie, dass Sie eine Kopie des Vektors erstellen, d. H. Sie haben keine Referenz & verwendet. Das Gleiche gilt für die for-Schleife, jetzt ist es nur ein int, aber bei größeren Objekten vermeidet die Referenz, dass Sie jedes Objekt im Vektor kopieren. – Michiel