2011-12-10 15 views
1

diffrenceが言うbeatweenどのようなものです:ベクトルとポインタの構文

Vector<int*> myVector[5] and Vector<int> *myVector[5] 

私はそれを参照してください方法は、最初のケースでは、私のベクトルはint型へのポインタの5つのカウントが含まれています。 2番目のケースでは、myVectorは5つの整数の配列へのポインタです。

私が尋ねる理由は、コードを書いていて、今はもう理解できないからです。 Vector<int> *myVector[5]

、なぜ私は

for(int i = 0; i < 5; i++) 
     { 
      myVector[i] = new Integer(13); 
     } 

を行うことができます私はそのオペレータ新しいリターンポインタ事実を知って、その後、私はmyVectorに保存するんだけど、int型へのポインタではありませんint right? 私は混乱しています。

答えて

0
Vector<int*> myVector[5] 

サイズが5からVector<int*>の配列を作成します。

Vector<int> *myVector[5] 

Vector<int>から5つのポインタの配列を作成します。
代わりに、ベクターにベクターを使用するクリーナーsoutionである:

vector<vector<int> > myVector(5); 
+0

OH、2番目の場合intを含むベクトルへのポインタの配列を持っています....今すぐ取得します!ありがとう。したがって、最初のケースでは、intへのポインタを含むベクトルを含む配列を作成しています。私はベクトルと混乱して...私が配列を使用していたことを認識していない。だからintを含むベクトルを作成するには、私はベクトルに行くと思います myVector(5) –

0
std::vector<int*> myVector[5]; // array of vector of pointer to int 
std::vector<int> *myVector2[5]; // array of pointer to vector of int 
for(int i=0;i<5;i++) 
    myVector[i]=*new std::vector<int *>(2); 
int j=42; 
myVector[0].push_back(&j); 
for(int i=0;i<5;i++) 
    myVector2[i]=new std::vector<int>(2); 
myVector2[0]->push_back(j); 
+0

ありがとう!今、私は分かる。意味をなさない! –

1

使用する場合はベクトル* myVector [5]、myVector 5つのintの配列へのポインタが、5つのポインタの配列ではありませんベクトルを指す。

Vector<int> *myVector[5]; 
for(int i = 0; i < 5; i++) 
{ 
    myVector[i] = new Integer(13); 
} 

ここで、myVector [i]はベクトルのポインタである。私はこのコードが納得できるとは思わない。あなたは、クラスの整数についていくつかの詳細を教えてください?

+0

申し訳ありませんが、コードを変更しました。これを簡単にして、あなたが正しいと認識しました。これは全く意味がありません。助けてくれてありがとう。 –

0

最初のケースでは、私のベクトルには5つのカウントが含まれています intsへのポインタです。 2番目のケースでは、myVectorは、5 intの 配列へのポインタです。最初のケースで

号は、5 Vector<int*>オブジェクトを持つことになり、第2のケースでは、5 Vector<int>オブジェクトを有することになります。 Vector<int*>は(おそらく)整数へのポインタのベクトルです。 Vector<int>は(おそらく)整数のベクトルです。したがって、基本的には2次元配列ですが、1次元は動的配列(ベクトル)になります。

私はnew演算子を返すそのポインタ事実を知っ

、その後、 私はmyVectorに格納するんだけど、int型へのポインタは、右のint型 ではないでしょうか?よくわかりません。

intへのポインタはintではありませんが、少なくとも32ビットのWindowsではintとして格納できます。

しかし、あなたの場合、それは起こっていることではありません。 IntegerへのポインタがVector<int>へのポインタとして格納されています。おそらく古いバージョンのVisual C++では、異なるポインタ型間の暗黙的な変換が可能になるため、コードはコンパイルされます。新しいバージョンではコンパイルしないでください。

+0

今考えてみましょう、ありがとう!! –

関連する問題