Разница между списками инициализаторов 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?

Ответы на вопрос(2)

Ваш ответ на вопрос