Diferencia entre las listas de inicializadores std :: vector y std :: array

Este código C ++ 11 funciona bien para mí:

#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 los seis valores esperados.

Pero si cambiovector<str> aarray<str,3>, gcc me da este error: "demasiados inicializadores para 'std :: array'".

Si cambio la inicialización defields así:

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

Las cosas funcionan bien.

Entonces, ¿por qué necesitostr{1,2} cuando usasstd::array, pero sólo{1,2} cuando usasstd::vector?

Respuestas a la pregunta(2)

Su respuesta a la pregunta