Указатель на Элемент Вектора

Если у меня есть указатель, который указывает на элемент в векторе, скажите элемент 2, и затем что элемент подкачивается с элементом 4 из того же вектора. Указатель теперь указывает на элемент 2, элемент 4, или ни один? Пример:

векторизуйте равного [1,2,3,4,5]
создайте указатель, который указывает на элемент 2, который равен 3 в этом случае
элементы подкачки 2 и 4
векторизуйте теперь [1,2,5,4,3]

где вектор указывает?

7
задан Silvae 8 September 2011 в 17:34
поделиться

1 ответ

Вы имеете в виду, «куда указывает указатель?». В этом случае он будет указывать на то же место в памяти, что и раньше, которое теперь занято значением 5 .

Кроме того, я предполагаю, что под заменой вы имели в виду обмен значениями между двумя местами.

Почему?

Просто потому, что ваш указатель указывает на ячейку памяти. Что там хранится, не имеет значения - это может быть значение или мусор. Когда вы разыменовываете его (чтобы узнать, какое значение), он вернет значение, хранящееся в этом месте.

Поскольку вы поменяли местами значения, значение в этом месте равно 5 , а не 3 , следовательно, указатель по-прежнему указывает на то же место и не изменился , но значение в местоположении изменилось .

Пример кода:

// Create the vector
int a[] = {1,2,3,4,5};
int* ptr = &a[2];
// Display original status
std::cout<<"Original Value: "<<*ptr<<std::endl;
std::cout<<"Address: "<<ptr<<std::endl;
// Swap values
std::swap(a[2],a[4]);
// Check 
std::cout<<"New Value: "<<*ptr<<std::endl;
std::cout<<"Address: "<<ptr<<std::endl;

Примечание:

Я использовал в примере массив целых чисел, но если под вектором вы имели в виду std :: vector , то же самое будет и при условии, что перераспределение не выполняется. имело место (проверьте этот ответ SO ).

8
ответ дан 7 December 2019 в 05:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: