Differenz zwischen std :: vector- und std :: array-Initialisierungslisten
Dieser C ++ 11-Code funktioniert einwandfrei für mich:
#include <iostream>
#include <vector>
#include <array>
using namespace std;
struct str {
int first, last;
};
vector<str> fields {
{1,2}, {3,4}, {5,6}
};
int main()
{
for (str s : fields)
cout << s.first << " " << s.last << endl;
}
Es werden die sechs erwarteten Werte ausgegeben.
Aber wenn ich änderevector<str>
zuarray<str,3>
, gcc gibt mir folgende Fehlermeldung: "Zu viele Initialisierer für 'std :: array'".
Wenn ich die Initialisierung von @ ändefields
also:
array<str,3> fields {
str{1,2}, str{3,4}, str{5,6}
};
Things arbeiten nett.
So warum brauche ichstr{1,2}
beim Benutzenstd::array
, aber nur{1,2}
beim Benutzenstd::vector
?