当我在标识符类型为std :: vector< Foo *>时调用std :: vector :: reserve时保留(…)什么都不做:
std::vector<int*> bar; bar.reserve(20); //I expect bar.size to return 20... std::size_t sz = bar.size(); for(std::size_t i = 0; i < sz; ++i) { //Do Stuff to all items! }
前面提到的for循环运行正好零次,bar.size()返回零.我不记得所有其他STL容器是否也是如此,但如果是这样,包括std :: vector的行为:为什么?