-1

如果效率是一个问题并且我需要向量,我应该使用什么?

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

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

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

我可以假设 WantedSize = size()

4

1 回答 1

7

你错过了一个:

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

而不是做memset.

它是最有效的,因为它不会导致重新分配。没有重新分配也意味着没有迭代器失效,这在 IMO 上更安全。

std::fill也是类型安全的,通常推荐用于填充标准容器(不仅仅是std::vector!)。也更灵活,因为您可以提供容器以外的其他类型的值,value_type只要提供的值可以转换为value_type.

于 2013-11-14T09:35:05.457 回答