c++ - 向量的容量?
问题描述
根据 c++ 参考,vector 的 .capacity() 函数返回“分配的存储容量的大小”。
这是否意味着向量 {1} 应该像数组一样具有 sizeof(1) 的容量?如果是这样,那么为什么这段代码:
int main() {
vector<int> v = {1};
cout << v.capacity() << endl;
return 0;
}
产生 1 而不是 4(sizeof(v[0]))?
我刚开始学习 C++,如果我听起来很愚蠢,请原谅我。
解决方案
向量的capacity()
更好地表示为“当前留出的可用于存储的空间量”,以可以存储的潜在元素的数量表示。注意like size()
,这是元素的数量,而不是字节的数量。
例如,一个向量可能有size()
3 和capacity()
4 的 a:这表示它当前存储 3 个元素,并且在需要重新分配之前最多可容纳 4 个元素(总共)。
另一方面,sizeof
返回给定类型的对象所需的字节数,并在编译时确定。例如,如果您想要向量当前分配用于存储的字节数,您可以执行vector.capacity() * sizeof(vector[0])
.
推荐阅读
- laravel - 如何使用查询生成器计算 Laravel 中的两个相关日期?
- java - java.lang.UnsatisfiedLinkError:java.library.path 中没有“somefile”
- r - 如何从 R 中的文件夹中删除“权限被拒绝”文件
- javascript - 在javascript中按类名获取元素让我发疯
- javascript - 如何将组件挂钩与 Formik handleSubmit 一起使用?
- linux - Ansible 创建用户并将他们分配到基于 vars 的特定组
- apache-kafka-streams - Kafka Stream:应用程序重启时的 Kafka Windowed Stream 行为
- javascript - 调用反应路由器链接时反应引导下拉菜单不会关闭
- google-cloud-platform - 从 GCP 向 Segment.io 发送 HTTP POST 请求
- mongodb - MongoDB $文本搜索未返回预期结果