2012-03-03 9 views
3

私はこのコード行が何をしているのかは分かりません。ベクトル宣言のC++ベクトル

vector<vector<A>> someth; 

これは、クラスAのオブジェクトを持つ要素ベクトルを持つベクトルを作成することを意味しますか? 誰か説明できますか?

ありがとうございました

+0

http://stackoverflow.com/questions/8660303/c-creating-vector-of-vectors –

答えて

8

はい。

はまた、あなたの構文はC++ 11の前にサポートされていないことに注意してください。

vector<vector<A> > someth; 

は事前C++ 11構文です。それ以前は>>がビットシフト演算子として扱われていたので、コンパイラによってはコンパイラエラーが発生することがありました。

実際にはvector<A>のオブジェクトを含むことができる空のvectorが作成されます。

+0

小さなディテールことが、私は構文はC++ 0xの中に受け入れられたと思っべきでしょうか? – helloworld922

+0

@ helloworld922 C++ 0xはC++ 1です。 –

+0

Ahh、ok。けっこうだ。 – helloworld922

4

はい、これは要素がAオブジェクトのベクトルである要素を持つベクトルを作成します。この宣言はC++ 11でのみ有効であることに注意してください。その前には、>>はシンボル>>(読まれた)と解釈されました。 vector<vector<A> > someth;(スペースを含む)と宣言する必要があります。

1

はい、それはまさにそれが意味するところです、それはAのベクトルのベクトルです。

3

修正。基本的に

someth[i] 

はベクターを返します。そして

someth[i][j] 

A.

ことの一つは、に注意を払う必要が戻りますが2「>」の間にスペースがなければならないということです。

vector<vector<A> > someth; 
+0

スペースはpre-C++ 11コンパイラにのみ必要です。 –

関連する問題