如果效率是一个问题,我需要矢量,我应该使用什么?
assert(myVector.size() == wantedSize)
memset(&*myVector.begin(),0,myVector.size() * sizeof(T));
myVector.clear();
myVector.resize(wantedSize);
myVector.clear();
myVector.assign(wantedSize,0);
Run Code Online (Sandbox Code Playgroud)
我可以假设wantSize = size()
你错过了一个:
std::fill(myVector.begin(), myVector.end(), 0);
Run Code Online (Sandbox Code Playgroud)
而不是做memset.
它是最有效的,因为它不会导致重新分配.没有重新分配也意味着没有迭代器失效,这是IMO更安全.
std::fill也是类型安全的,通常建议用于填充标准容器(不仅仅是std::vector!).还可以更灵活,value_type因为只要提供的值可以转换为容器,就可以提供除容器之外的其他类型的值value_type.