哪个在C++中成本最高,删除最后一个元素或调整向量的大小?

Mer*_*rni 1 c++ resize vector c++11

哪个操作在C++中成本最高?
1.调整向量的大小(将大小减小1)
2.删除向量中的最后一个元素

Tem*_*Rex 11

来自http://en.cppreference.com/w/cpp/container/vector,它基本上引用了标准:

void pop_back();
Run Code Online (Sandbox Code Playgroud)

删除容器的最后一个元素.没有迭代器或引用,除了back()end()无效.

void resize( size_type count );
Run Code Online (Sandbox Code Playgroud)

调整容器大小以包含计数元素.如果当前大小大于count,则容器将减少为其第一个计数元素,就像重复调用一样pop_back().

所以在这种情况下,调用resize(size() - 1)应该等同于调用pop_back().但是,pop_back()表达你的意图时,调用是正确的.

注意:答案是反映C++ 11的更改接口std::vector::resize(),它曾经包含一个隐藏的默认参数,该参数被复制(可能已经或可能没有被优化).