Разница между списками инициализаторов std :: vector и std :: array
Этот код C ++ 11 прекрасно работает для меня:
#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;
}
Он печатает шесть ожидаемых значений.
Но если я изменюvector<str>
вarray<str,3>
, gcc выдает мне эту ошибку: «слишком много инициализаторов для« std :: array »».
Если я изменю инициализациюfields
таким образом:
array<str,3> fields {
str{1,2}, str{3,4}, str{5,6}
};
Все работает хорошо.
Так зачем мнеstr{1,2}
когда используешьstd::array
, но только{1,2}
когда используешьstd::vector
?