通常、どちらを使用するのが良いかはわかりません。どちらも一般的に同じことをしているように見えますが、ベクトルができることの点でより柔軟ですか? 配列がより適切なのはいつですか?
質問する
15375 次
2 に答える
16
std::vector<T>
ベクトルがスコープ外になると破棄が自動的に行われ、割り当てられたメモリがヒープにきちんと配置され、すべてのメモリが処理されるため、 通常は常に使用することをお勧めします。std::vector<T>
配列に取得するすべてのものを提供し、要素がメモリに連続して格納されることを保証します ( を除くstd::vector<bool>
)。
次のstd::vector<bool>
ようなコードは壊れてしまうため、注意が必要です。
std::vector<bool> vb;
vb.push_back(true);
vb.push_back(false);
vb.push_back(true);
bool *pB = &vb[0];
if( *(pB+1) )
{
// do something
}
実際には、std::vector<bool>
連続した s は格納されませんbool
。これは、C++11 で修正された標準の例外です。
于 2012-06-02T21:01:31.163 に答える
3
私が実際に配列を使用するのは、組み込みシステムで作業する場合、または特定の API で必要な場合 (つまり、配列を関数の引数として受け取る場合) だけです。また、配列を使用する必要がある場所が 1 つまたは 2 つしかない場合、またはベクトル機能を特に必要としない場合は、vector.h のオーバーヘッドが増えるため、配列を使用する方が理にかなっています。
それ以外の場合は、ベクトルを使用してください:)
于 2012-06-02T21:00:19.020 に答える