2017-01-24 6 views
3

私は、各値が実際には4つの値であるベクトルを作成する必要があります。配列のベクトルに値を追加するには?

std::vector<std::array<unsigned int, 4>> arrayVector; 
:それは次の構文で最適であると考えているために、私が主導していますこれらのスレッドから

Vector of a Fixed size array

Cant make a vector of fixed size arrays?

Vector of vectors, reserve

:だから、古き良きGoogleはこれらのページに私を導きました

その部分はうまくいくようですが、今度は値の最初の行を追加したいと考えています:

arrayVector.push_back({ 0, 1, 2, 3 }); 
そして、その部分がコンパイルされません:

重大度コード説明プロジェクトファイルの行の抑制状態 エラー(アクティブ)オーバーロードされた関数のインスタンス「のstd ::ベクトル< _Ty、_Alloc> ::一back [と_Ty =のstd ::配列、_Alloc =のstd ::アロケータ>]」

は、私はまた、別の変数としてint型の配列を作成し、一backにその変数を渡して試してみた引数リストと一致し、同じ結果でも。

私はMicrosoft Visual Studio Community 2015を使用していますが、通常はC++を選択するのではなく、明らかに不明な点があります。前もって感謝します。

+1

私は[IdeOne](https://ideone.com/kogZIJ)でコンパイルされているようです... –

+1

あなたのコードは、他のスレッドで誰も言及していないという大きな手がかりを与えました。#include :Dそれがそれかもしれません。 std :: arrayが使われている最初の行にコンパイルエラーがなかったので、私はそれをチェックするとは思わなかった。 – braks

答えて

1

はこれを試してみてください

 

    arrayVector.push_back(std::array&ltunsigned int, 4>{0, 1, 2, 3}); 

+0

これは、「不完全な型は許されません」と「初期化子の値が多すぎます」というエラーが2つあります。 – braks

+1

g ++ 5.4を使って私のためにコンパイルします。 p.s.私はヘッダーファイルについてのあなたのコメントを見ました。誰もがそれが(舞台裏で話すために)含まれていると思ったと思う。乾杯。 – ccpgh

4

を試してみてください。例えば、(例えば)クランの

arrayVector.push_back({{ 0, 1, 2, 3 }}); 

古いバージョンの余分な括弧が必要です - 理由は、あなたが初期化しているということのようですstd::arrayの中のCスタイルの配列。

+0

私のためのトリックをしていないようです。ありがとう! – braks

関連する問題