-1

内部ベクトルが再次元化されている場合、私はすでにstd::vector内部でいくつかの問題を抱えています。(内部文字列のサイズを変更できるため)std::vectorを持つことが完全に安全であるか、それとも優れているかを知りたいですか?std::vector<std::string>std::vector<std::string*>

4

2 に答える 2

3

この質問は、ベクトルが配列と同じように見えるという誤解の結果である可能性が最も高いです。

ベクトルのサイズを変更できるのは事実ですが、静的sizeof(vector<X>)は実行時のサイズに依存しないため、配列には同じ型と静的サイズの要素が含まれている必要があります。 vector<vector<X> >には、動的に割り当てられた の配列へのポインタ (およびその他の記述データ) だけが内部的に含まれており、vector<X>各配列には、動的に割り当てられた独自の の配列へのポインタだけが含まれていますX

実際、配列は同じサイズの同じ要素で作成されます。

于 2012-09-06T11:57:09.327 に答える
1

vector標準タイプの要件を満たす任意のタイプに配置しても完全に安全です。これらの要件はインターフェイス上で厳密に指定されており、基本的には「可動」と要約されます。std::string可動式なので収納も可能vector。他のメモリを動的に割り当てる可能性があるという事実は関係ありません。

于 2012-09-06T12:00:18.437 に答える