2016-03-27 20 views
0

ので、同様に私は現在、テーブルの2Dベクトル表現で働いている:ベクトル演算子[]戻り値

vector< vector<myStruct> > table 

体mystructは私が作ったクラスです。今は、myStruct型の変数を作成し、それをテーブルの値と同じに設定しています。私はforループの中で次のようにしています。

myStruct object = table[i][j]; 

私はベクトルのoperator []が参照を返すことを知っているが、私は体mystructの新しいインスタンスを宣言していますから、何かが実際にオブジェクトにコピーされていますか?

私は次のようなものをやってすることは、私は上記の持っているものとは異なることかどう思ったんだけど:

myStruct & object = table[i][j]; 

これはテーブルから何かへのオブジェクトのみを参照すること、コピーされることから何かを妨げる、またはこれらの両方が本質的に同じことをしていますか?右の両方のカウントに

答えて

3

。最初のものは、作成されるオブジェクトにコピーされます。 2番目はコピーしません。それは配列要素への参照を作成します。

0

ベクトルの演算子[]は参照を返しますが、私はmyStructの新しいインスタンスを宣言しているので、実際にオブジェクトにコピーされていますか?

はい。

myStruct & object = table[i][j]; 

これは テーブルから何かへのオブジェクトのみを参照すること、コピーされることから何かを妨げる、あるいはこれらの両方は、本質的に同じことをやっていますか?

彼らは同じではありません。
objecttable内部の要素を参照します。

は、参照される要素を消去しないように注意してください、またはそうでなければぶら下げるます。