この投稿のコメントセクションには、std::vector::reserve()
vs std::vector::resize()
。の使用に関するスレッドがあります。
元のコードは次のとおりです。
void MyClass::my_method()
{
my_member.reserve(n_dim);
for(int k = 0 ; k < n_dim ; k++ )
my_member[k] = k ;
}
に要素を書き込むにはvector
、正しいことはstd::vector::resize()
、ではなく、を呼び出すことだと思いstd::vector::reserve()
ます。
実際、VS2010 SP1のデバッグビルドでは、次のテストコードが「クラッシュ」します。
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.reserve(10);
v[5] = 2;
return 0;
}
私は正しいですか、それとも間違っていますか?そして、VS2010 SP1は正しいですか、それとも間違っていますか?