1

タイプのオブジェクトを含む構造coordとベクトルがありますcoord

struct coord
{
   int x1;
   int x2;
};

vector<coord> v[n];

ここで、(ベクトル宣言の直後に)何かをvectorvに入れようとするとv[0].x1=2、コンパイラーは次のようなエラーを出します。

'class std::vector<coord, std::allocator<coord> > has no member named x1'

しかし、座標を格納するためtempにタイプのオブジェクトを使用する場合、次のcoordようなベクトルを定義します

vector<coord> v   //i.e without specifying size of vector

、ベクターにプッシュしてからアクセスしv[0].x1てみてください。正常に動作します。

では、なぜ私は最初の方法ではなく2番目の方法を使用してベクトルに入れることができないのですか?

4

2 に答える 2

4

サイズのベクトルを作成するにはn、角かっこではなくかっこを使用します。

vector<coord> v(n);

角かっこを使用すると、座標nを持つベクトルではなく、ベクトルの配列が作成されます。n

于 2013-02-26T04:15:50.773 に答える
3

単一のベクトルではなく、ベクトルの配列を宣言したためv[n]、ベクトルを返します。引数を指定してコンストラクターを呼び出す必要がありsize_tます。

vector<coord> v(size); 
于 2013-02-26T04:16:15.563 に答える