У меня есть два вопроса относительно векторов.C++ - Как хранятся многомерные векторы?
Допустим, у меня есть многомерный вектор следующим образом: -
vector< vector<int> > A;
Тогда
A[0]
,A[1]
и т.д. являются векторами. Как хранятся векторы вA
? I означает, какая информация об векторах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
не меняется, даже если адрес для A[0]
изменений. Этого следует ожидать, поскольку векторы работают в фоновом режиме, используя new
и delete
. Но мой вопрос в том, сколько информации (или какой информации) о векторе хранится в адресе &A
(с учетом адреса &A
не изменяется). Это вопрос, который я имею и в отношении первого вопроса.
Я пытаюсь лучше понять, как работают векторы по умолчанию.
Это довольно просто: 'станд :: вектор' 'содержит объекты x', независимо от типа' x' (с возможным исключением 'std :: vector '.) –
juanchopanza
'Что хранится в A' Элементы типа' vector ', конечно, вид' A' - это 'vector >' (и не 'vector ' для некоторого типа 'T'). 'Я подозреваю, что он хранит указатели' И на чем вы основали подозрение? –
STL - это не то же самое, что и стандартная библиотека C++. –