実行時に、のサイズを決定できvector
ますか?
例えば
input : 25 // ベクトルのサイズを示す
code :
int N ;
cin << N ;
vector <int> data[N];
実行時に、のサイズを決定できvector
ますか?
例えば
input : 25 // ベクトルのサイズを示す
code :
int N ;
cin << N ;
vector <int> data[N];
興味があるかもしれない 2 つの方法:
std::vector<T>::size
ベクトルの要素数を返します。
std::vector<T>::capacity
ベクトルがメモリを割り当てた要素の数を返します。
スニペットの例
std::vector<int> v;
for (int i =0; i < 25; ++i)
v.push_back (i);
v.reserve (100);
std::cerr << "Elements: " << v.size () << std::endl;
std::cerr << "Capacity: " << v.capacity () << std::endl;
出力
Elements: 25
Capacity: 100
元の投稿のサンプル スニペットには少なくとも 1 つのタイプミスが含まれていると思います。以下のようにstd::vector<int>
withN
要素を宣言していません。
あなたが書いたのは、 data がvector<int>
sizeの配列でありN
、コンパイル時に N がわかっている場合 (またはコンパイラに可変長配列拡張が存在する場合) にコンパイルされるということです。
vector<int> data[N];
を作成して最初から要素をvector
挿入するには:N
std::vector<int> data (N);
あなたはvector
(おそらく)間違った方法で使用しています...その方法では、NベクトルのCスタイルの配列を定義しています(ちなみに、コンパイル時にNを知る必要があるため、その構文は標準ではありません)。おそらくvector
包含N
要素を定義したいでしょう。これは次のように行われます:
vector<int> data(N);
vector
(これは、デフォルトで初期化された配列N
要素 longを構築するの 1 パラメータ コンストラクタを呼び出します)
実行時にそのサイズを取得するには1、そのメソッドを呼び出すだけですsize()
:
cout<<"The vector contains "<<data.size()<<" elements.\n"
vector
のサイズ (そこに格納されている要素の数として意図されている) は実行時にのみ定義されるため、実際にはコンパイル時にそのサイズを尋ねることさえ意味がありません。