c++ - 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++ 中有一个运算符返回完整(即已定义)类型的大小。sizeof(T)
返回类型的大小T
。
如果 A 类里面也有一个容器呢?那么就不可能保留正确的内存量吧?
那根本不是问题。所有类型的大小在 C++ 中都是恒定的。
推荐阅读
- javascript - 如何为 React 中现有的 Fetch API 调用添加数据的条件代码?
- python - 使 Matplolib 图不连续,其中 Y 值为 0
- laravel - 对于 1gb 或更大的文件,Laravel 存储 put() 或 putFileAs() 到 S3 目录失败
- junit - when().thenReturn() 不返回服务层方法调用
- c# - Visual Studio 中的白色文件夹是什么意思?
- python - 在 VSCode 中,Python 调试器每次调试时都会启动一个新终端
- javascript - 将对象形状的数组转换为不同的数组块
- php - MPDF pdf 未在任何浏览器中打开,Codeignitor 中未显示错误
- python - 匹配数字按顺序列出python
- javascript - 从javascript中的url路径中提取参数