-1

効率が問題で、ベクターが必要な場合、何を使用すればよいですか?

assert(myVector.size() == wantedSize)
memset(&*myVector.begin(),0,myVector.size() * sizeof(T)); 

myVector.clear(); 
myVector.resize(wantedSize); 

myVector.clear(); 
myVector.assign(wantedSize,0);

wantSize = size() と仮定できます

4

1 に答える 1

7

あなたは1つ逃しました:

std::fill(myVector.begin(), myVector.end(), 0);

する代わりにmemset

また、再割り当てが発生しないため、最も効率的です。再割り当てがないということは、イテレータの無効化がないことも意味します。これは、IMO より安全です。

std::fillも型安全であり、標準的なコンテナ (だけでなくstd::vector!) を満たすために一般的に推奨されるものです。value_typeまた、提供された値がそれに変換可能である限り、コンテナー以外の別の型の値を提供できるため、より柔軟ですvalue_type

于 2013-11-14T09:35:05.457 に答える