首页 > 解决方案 > std::vector::reserve() 如何知道每个元素需要多少内存?

问题描述

我了解 std::vector::reserve() 如何处理原始类型的向量:

vector<int> vec;
vec.reserve(100);

假设您创建了一个空的对象向量:

class A {
    public:
    string name;
}

vector<A> vec;
vec.reserve(100);

它如何知道要保留多少内存?不仅如此,如果 A 类里面也有一个容器呢?那么就不可能保留正确的内存量吧?

标签: c++stdvector

解决方案


容器通过知道元素类型的定义来知道元素类型的大小。C++ 中有一个运算符返回完整(即已定义)类型的大小。sizeof(T)返回类型的大小T

如果 A 类里面也有一个容器呢?那么就不可能保留正确的内存量吧?

那根本不是问题。所有类型的大小在 C++ 中都是恒定的。


推荐阅读