これはC++ 11固有の質問です。 ベクトルstd::vector<T> v
がすでに使用されており、n
の要素を既定の値T val
で初期化するようにサイズを変更したいとします。 (典型的なusecase:ベクトルはリサイクルされるインスタンスのメンバーです)。std :: vector <T> :: resize(n、val)は初期化に十分ですか?
以下の方法の長所と短所は何か、最も効率的です。
1)std::vector<T>::resize(n, val)
は初期化に十分ですか?
v.clear();
v.resize(n, val);
2)そうでない場合は、以下が正しいと思いますか?
v.clear();
v.resize(n);
std::fill(v.begin(), v.end(), val);
3)交換はどうですか?
v.swap(std::vector<T>(n, val));
これが重複している場合、私はそれを閉じるために投票よ、ソリューションにリンクしてください。 – Sheljohn
サイズを変更したいのはなぜですか?メモリを解放するには? – edmz
@black典型的なケース:これはクラスメンバであり、インスタンスをリサイクルしています。 – Sheljohn