【发布时间】:2013-11-13 10:51:12
【问题描述】:
假设我有一个这样的结构:
struct vertexNodeInfo
{
unsigned char level;
int node;
double leaf;
};
如果我有这个:
vector<vertexNodeInfo> node;
在任何push_back 之前,空向量会有多大(内存方面,而不是.size)?它的大小会与vector<int> node; 完全相同(同样,就内存而言)?
【问题讨论】:
-
它需要足够的空间来存储指向某些数据的指针、数据的大小或结尾以及它的容量。试试
sizeof(std::vector<int>)。大小与它在任何给定时间拥有的元素数量无关。 -
@juanchopanza 其实我希望有人能告诉我。我正在编写一个复杂的 DLL,但我还不能编译它。我需要知道答案才能完成并编译,所以我无法使用
sizeof轻松测试。 -
@Clonkex 通常,不。学究式地,是的,它可能是,因为指向不同类型的指针的大小可能会有所不同。
-
我认为 Ed 的意思是你通常不应该编写取决于空向量占用多少内存的代码。事实上,由于在标准中并不能保证您不能编写依赖于它的可移植代码。但即使有保证,也需要非常特殊的情况才能让任何人依赖它。
-
@Clonkex:重要的是函数参数的声明,而不是对象的来源。如果函数需要一个指针,那么你将传递一个指针。如果它需要一个向量,那么你将传递一个向量...