それを行う正しい方法は何ですか?
あなたが示した方法は可能な方法です。以下を使用することもできます。
vector<vector<int>> myvect = { {10,20,30,40},
{50,60,70,80} };
vector<vector<int>> myvect{ vector<int>{10,20,30,40},
vector<int>{50,60,70,80} };
最初のものstd::initializer_list<std::vector<int>>
は、要素が内部の中括弧初期化子リストから直接初期化される a を構築します。2 番目のものは、一時的なベクトルを明示的に作成し、それを に移動しstd::initializer_list<std::vector<int>>
ます。その動きは省略できるため、これはおそらく違いはありません。
いずれにせよ、 の要素は にstd::initializer_list<std::vector<int>>
コピーされmyvect
ます ( から移動することはできませんstd::initializer_list
)。
そして、forを使用してそれをどのように繰り返すことができますか?
基本的にvector の vector があるため、2 つのループが必要です。
for(vector<int> const& innerVec : myvect)
{
for(int element : innerVec)
{
cout << element << ',';
}
cout << endl;
}
auto
結果の型を明示的に表示するために使用することは控えました。
ところで、これはどういう意味ですか?
これはおそらくタイプミスです。このままでは違法です。宣言は 5 の配列をvector<int> myvect[5];
宣言します。したがって、次のリスト初期化では配列を初期化する必要がありますが、このリストの要素は暗黙的に変換できません( を受け取る ctor がありますが、明示的です)。vector<int>
vector<int>
size_t
それはその辺のコメントですでに指摘されています。
作者が書きたかったのでしょうstd::vector<int> vArray = {3, 2, 7, 5, 8};
。