c++ - C++中 vector 的初始容量

标签 c++ memory-management stl vector

什么是capacity()std::vector哪个是使用默认构造函数创建的?我知道 size()为零。我们可以声明一个默认构造的 vector 不调用堆内存分配吗?

这样可以使用单个分配创建具有任意保留的数组,例如 std::vector<int> iv; iv.reserve(2345); .假设由于某种原因,我不想启动 size()在 2345 上。

例如,在 Linux 上(g++ 4.4.5,内核 2.6.32 amd64)

#include <iostream>
#include <vector>

int main()
{
  using namespace std;
  cout << vector<int>().capacity() << "," << vector<int>(10).capacity() << endl;
  return 0;
}

打印 0,10 .这是一个规则,还是依赖于 STL 供应商?

最佳答案

标准没有指定初始 capacity一个容器应该是,所以你依赖于实现。一个常见的实现将从零开始容量,但不能保证。另一方面,没有办法改进您的 std::vector<int> iv; iv.reserve(2345); 策略。所以坚持下去。

关于c++ - C++中 vector 的初始容量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12271017/

相关文章:

c++ - 控制枚举值的可见性

c - 使用指向结构的指针在 C 中创建链表和内存分配

c++ - 使用 std::regex 分割行并丢弃空元素

c++ - C++ STL 集 : Can comparison function be a member function of a class? 的比较函数

c++ - STL/boost 方法为 vector 中的每个对象重复间接调用方法

C++ switch语句奇数输出

c++ - 根据另一个 Sprite SDL2 和 C++11 的旋转更改 Sprite 的位置

c++ - 在非类型模板参数中计算 constexpr lambda

c++ - 了解 shared_ptr

c - 使用 malloc 分配内存?