例如,浮点数是4个字节。这是否意味着包含10个浮点数的矢量恰好是40个字节?矢量的大小只是它的部分之和的大小?
-2
A
回答
0
一个可以解释以不同的方式的载体的“大小”:
vector::size()
给出当前存储在 向量元素的数目,而不管他们分配内存。所以myVector.size()
你的情况是10
vector:capacity()
为您提供了该载体迄今已分配的内存元件的数量。请注意,矢量在连续附加元素时,会以“块”的形式分配内存,即它可能会一次为50个新元素预留空间,以避免重复分配内存。所以capacity() >= size()
总是如此。sizeof(myVector)
会给你管理一系列动态增加的元素所必需的数据结构vector
的大小。它通常包含动态分配的内存,这并不反映在sizeof
中,因此在大多数情况下sizeof
的用处较少。
请看下面的代码:
int main() {
vector<float> fv;
for (int i=0; i<10; i++) {
fv.push_back(1.0);
}
cout << "size(): " << fv.size() << endl;
cout << "capacity(): " << fv.capacity() << endl;
cout << "sizeof(fv): " << sizeof(fv) << endl;
return 0;
}
输出:
size(): 10
capacity(): 16
sizeof(fv): 24
希望它能帮助。
0
A std::vector
有3种不同的尺寸。有矢量对象本身的大小,你可以通过size(std::vector<some_type>)
获得。尽管如此,这个尺寸对于任何东西都不是很有用通常,这将是三个指针的大小,因为这是典型的矢量实现方式。
第二个尺寸是从size()
成员函数返回的内容。从此返回的值是向量中元素的数量。这是大多数人在谈论矢量大小时使用的“大小”。
向量所具有的最后大小是它当前分配的元素的总数。这是从使用capacity
成员函数获得的。
所以一个持有10个浮点数的向量需要使用至少10个浮点值的内存,但它可能会使用更多,因为允许capacity()
比size()
更粗。但矢量对象本身的大小(sizeof(name_of_vector)
)将是一些值,并且无论添加到矢量中的元素有多少,该值都不会改变。
相关问题
- 1. 最大的矢量大小分配C++
- 2. 矢量声明和大小分配
- 3. STL矢量:调整大小()和分配()
- 4. 静态矢量的大小
- 5. 中等大小的矢量
- 6. 查找矢量的大小
- 7. 矢量大小的分段错误
- 8. C++矢量矢量的尺寸大小
- 9. Java矢量大小()
- 10. 矢量大小 - 1当大小在C++
- 11. 指定矢量大小vs保留矢量大小
- 12. 调整外部矢量的大小是否会复制内部矢量?
- 13. 如何将矢量大小分配给数组大小C++?
- 14. 如何及时选择超大型矢量的一小部分?
- 15. 调整大小后的矢量容量
- 16. 大小vs矢量的容量?
- 17. 什么是矢量长度和矢量缓存大小?
- 18. 矢量大小添加
- 19. C++矢量大小为零
- 20. 矢量大小未知
- 21. Matlab:优化缩小矢量大小
- 22. 调整大小嵌套的std ::矢量
- 23. 查找2D矢量的大小
- 24. goodFeaturesToTrack给出了零大小的矢量
- 25. 受std :: cin影响的矢量大小?
- 26. 中等大小的矢量类?
- 27. 问题与指定大小的矢量
- 28. 把不同大小的矢量矩阵
- 29. 未知的矢量大小python
- 30. STL的矢量调整大小
现在你问'vector_name.size()'或'sizeof(vector_name)'? – NathanOliver
@NathanOliver嗯......差别究竟是什么? – user7554160
第一个是有用的,第二个不是那么多 – NathanOliver