Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dikanev
21 / 21 / 1
Регистрация: 28.05.2010
Сообщений: 67
#1

Меняют ли элементы в vector свои адреса при вызове метода push_back? - C++

11.11.2010, 20:59. Просмотров 521. Ответов 1
Метки нет (Все метки)

Допустим я определил вектор и указатель на один из его элементов:
C++
1
2
vector< int > v( 10 );
int* p = &(v[5]);
Затем использую push_back
C++
1
v.push_back(42);
Может ли при этом изменится адрес элемента v[5], так что указатель p перестанет на него указывать?
А если может, то спасут ли меня ссылки вместо указателей?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2010, 20:59     Меняют ли элементы в vector свои адреса при вызове метода push_back?
Посмотрите здесь:

Вызов конструктора с несколькими параметрами при использовании push_back() в vector'е C++
Непонятная ошибка при вызове std::vector::resize C++
C++ класс vector ошибка в push_back()
C++ Vector . push_back
C++ Метод push_back() класса vector
VisualStudio C++ vector<vector<int> > push_back() C++
C++ push_back() and vector of classes
C++ Ошибка push_back() в vector
C++ vector выдает странные строки при использовании push_back
C++ Программа падает при вызове vector::begin()
При использовании push_back для vector-а, все предыдущие элементы перезаписываются C++
C++ Краш на моменте vector.push_back()

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
11.11.2010, 21:17     Меняют ли элементы в vector свои адреса при вызове метода push_back? #2
dikanev, Адрес нет. Значение да. В p будет мусор.

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <vector>
#include <iostream>
 
using namespace std;
 
int main()
{
    vector< int > v( 10 );
    int* p = &(v[5]);
    cout<<p<<' '<< *p <<'\n';
    v.push_back(5);
    cout<<p<<' '<< *p <<'\n';
    return 0;
}
Yandex
Объявления
11.11.2010, 21:17     Меняют ли элементы в vector свои адреса при вызове метода push_back?
Ответ Создать тему
Опции темы

Текущее время: 08:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru