【发布时间】:2015-02-08 22:39:22
【问题描述】:
有人可以确认以下之间的区别:
class A{
public:
std::vector<int> a;
std::vector<int> b;
};
和
class B{
public:
std::array<int, 1000> a;
std::array<int, 1000> b;
};
A 类对象包含两个指向堆上两个随机分配区域的指针?
相比之下,第二类对象将为两个数组分配连续的内存(取决于对象所在的位置 - 堆栈或堆),这将是连续的。数组将彼此相邻(A 类不会出现这种情况)?
【问题讨论】:
-
基本上,是的,虽然 a)
std::vector通常会存储多个指针,并且 b) 不能保证B::a和B::b在它们之间没有填充(尽管实际上很可能是这种情况)。 -
是的,没错。
-
此外,向量也将其数据存储在连续的内存块中……
-
谢谢大家。随时有人提出答案,我会接受。 @Igor 关于向量的好点不只是一个指针!
-
@user997112:我已经添加了答案...