Diferença entre as listas de inicializadores std :: vector e std :: array

Este código C ++ 11 funciona bem para mim:

#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;
}

Imprime os seis valores esperados.

Mas se eu mudarvector<str> paraarray<str,3>, gcc me deu este erro: "muitos inicializadores para 'std :: array'".

Se eu mudar a inicialização defields portanto:

array<str,3> fields {
    str{1,2}, str{3,4}, str{5,6}
};

As coisas funcionam bem.

Então, por que eu precisostr{1,2} ao usarstd::array, se apenas{1,2} ao usarstd::vector?

questionAnswers(2)

yourAnswerToTheQuestion