我有两个关于向量的问题。
假设我有一个多维向量,如下所示:
vector< vector<int> > A;
那么
A[0]
、A[1]
等都是向量。这些向量在A
中是如何存储的?我的意思是,关于向量A[0]
和A[1]
的哪些信息存储在A
中?单个向量(如A[2]
)的内存重新分配会导致A
的重新分配吗?第二个问题:我尝试查看向量在重新分配时地址如何改变。我使用了以下代码:
代码:
vector<int> A;
int* x ;
int* y ;
vector<int>* ad;
vector<int>* bd;
for(int i = 0 ; i < 10000; i++){
A.push_back(i);
if(i == 2){
y = &A[0];
ad = &A;
}
x = &A[0];
bd = &A;
}
我发现即使
A[0]
的地址改变,A
的地址也没有改变。这是可以预期的,因为向量在后台使用 new
和 delete
。但我的问题是,在地址 &A
中存储了多少关于向量的信息(或哪些信息)(考虑到 &A
的地址没有改变)。这也是我对第一个问题的疑问。我正在尝试通过默认方式更好地理解向量的工作原理。
std::vector<X>
包含X
对象,无论X
的类型是什么(可能除了std::vector<bool>
)。 - juanchopanzaA
中存储的是vector<int>
类型的元素,因为A
的类型是vector<vector<int>>
(而不是某种类型T
的vector<T*>
)。我怀疑它存储指针
。那么你基于什么怀疑呢? - Igor Tandetnik