Bu C++ 11 kod benim için çalışıyor listelenmektedir:Fark
#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;
}
altı beklenen değerleri yazdırır.
Ancak vector<str>
değerini array<str,3>
olarak değiştirirseniz, gcc bana şu hatayı verir: "std :: array" için çok fazla başlatıcı. "
Ben böylece fields
başlatılması değiştirirseniz:
array<str,3> fields {
str{1,2}, str{3,4}, str{5,6}
};
şeyler güzel çalışır.
Peki nedenstd::array
kullanırken
str{1,2}
ihtiyacım var ama sadece
{1,2}
std::vector
kullanırken?