Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

При использовании push_back для vector-а, все предыдущие элементы перезаписываются - C++
Доброго времени суток,хочу поместить в вектор пути к файлам в определенной директории. Но когда отлажываю программу то вижу что все...

vector выдает странные строки при использовании push_back - C++
Вот что я получаю *** Error in `./main': double free or corruption (!prev): 0x0000000001994a70 *** ======= Backtrace: ========= ...

Вызов конструктора с несколькими параметрами при использовании push_back() в vector'е - C++
Ситуация: #include &lt;vector&gt; class bar { public: bar(); bar(int); bar(int, int); //&lt;...&gt; };

VisualStudio C++ vector<vector<int> > push_back() - C++
Кодю на VS2010 vector&lt;vector&lt;int&gt; &gt;index_UV; index_UV.push_back(); //должен создаться пустой интовский вектор Вылетает...

Vector . push_back - C++
Доброго времени суток! Помогите пожалуйста поправить код!! #include &lt;vector&gt; #include &lt;iostream&gt; using namespace std; ...

Программа падает при вызове vector::begin() - C++
#include &lt;iostream&gt; #include &lt;vector&gt; int main () { std::vector&lt;int&gt; i{0,1,2,3,4,5,6}; i.erase(i.begin()); for(int...

1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
11.11.2010, 21:17 #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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2010, 21:17
Привет! Вот еще темы с ответами:

Ошибка push_back() в vector - C++
Доброго времени суток. Сразу код : #include &quot;stdafx.h&quot; #include &quot;expat.h&quot; #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include...

push_back() and vector of classes - C++
Добрый вечер! Есть код следующего вида: class topic_message { public: char* name_topic; message ** messages; ...

Непонятная ошибка при вызове std::vector::resize - C++
Недавно заметил непонятную ошибку при вызове метода resize(); Я так и не понял как правильно создавать таблицы с динамически...

Метод push_back() класса vector - C++
Пишу алгоритм динамического программирования, на каждой итерации в множество векторов возможно добавление вектора из этого же множества, но...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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