C:std :: vector :: reserve在包含指针时不保留

前端之家收集整理的这篇文章主要介绍了C:std :: vector :: reserve在包含指针时不保留前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我在标识符类型为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的行为:为什么?

解决方法

.reserve()不会更改向量的大小.您正在寻找的成员函数是.resize(). reserve()只是一种优化.如果你要使用push_back()逐个向向量添加一堆东西,然后告诉它使用reserve()添加多少可以使代码运行得更快一点.但只是调用reserve()不会改变大小.
原文链接:https://www.f2er.com/c/117646.html

猜你在找的C&C++相关文章