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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
TLENS
-7 / 2 / 0
Регистрация: 11.10.2011
Сообщений: 78
#1

Как передавать ссылку на структуру в map? - C++

13.05.2012, 01:21. Просмотров 1707. Ответов 22
Метки нет (Все метки)

Надо два контейнера один вектор со структурами второй мап с сылками на те структуры.
Но вот проблема в map<int, Test*> itag после новой записи предыдущая ссылка ведет на непонятную структуру в которой itag[key]->t = <неверный указатель а itag[key]->i = переполнение;
Я возможно не совсем понял основу. На манах просидел чета не найду подходящего примера.
пробовал и через инссерт тоже самое.
Подскажите как правильно?
спс!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct Test {
    string t;
    int i;
};
int main () {
    int test;
    vector<Test> data;
    map< int, Test*> itag;
    for (int i = 0; i < 10; i ++) {
        data.push_back(struct Test());
        data.back().t = '0' + i;
        data.back().i = i;
        itag[i] = &data.back();
    }
    getchar();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2012, 01:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как передавать ссылку на структуру в map? (C++):

Как передавать структуру в функцию? - C++
Вопрос глупый, возможно, но я совсем не понимаю, как. Есть у меня в программе стркутура: struct studentmark ...

как передавать структуру в массив? - C++
А заполнять его как обычный массив??? через цикл?

Есть ли аналог Map <String,String> чтобы передавать его как указатель на данные? - C++
Добрый день, подскажите, есть ли аналог Map &lt;String,String&gt; чтобы передавать его как указатель на данные? Заранее спасибо!

Как передать в функцию ссылку на структуру? - C++
Добрый вечер, помогите пожалуйста разобраться. Нужно чтобы функция myProc принимала не структуру, а ссылку на структуру.struct vs { long...

Как вставить элемент и вывести элементы на экран в map<string, map<string,int>> ? - C++
У меня есть map&lt;string, map&lt;string,int&gt;&gt;, в него надо добавить элементы (типа Ivanov potato 200) Использовать именно map&lt;string,...

Как вставить map в map - C++
есть такой map map &lt; INT64 , map &lt;INT64 , map&lt; wArray , int &gt; &gt; &gt; tMenu; как его заполнить? пробовал так ...

22
TLENS
-7 / 2 / 0
Регистрация: 11.10.2011
Сообщений: 78
13.05.2012, 02:56  [ТС] #16
А я спутал местами ссылку и указатель.

Добавлено через 4 минуты
grizlik78, Все я это понимаю.
Подумал что int *p Это ссылка а int & p это указатель.
0
Avazart
Эксперт С++
7213 / 5385 / 286
Регистрация: 10.12.2010
Сообщений: 23,789
Записей в блоге: 17
13.05.2012, 02:58 #17
Разница в том что к указателю можно примениять арифметические действия.
0
grizlik78
Эксперт С++
1953 / 1446 / 115
Регистрация: 29.05.2011
Сообщений: 3,005
13.05.2012, 02:59 #18
Ладно, раз понимаешь, тогда постараюсь запутать. В моём коде &abc это указатель, а *p это, фактически, безымянная ссылка
0
TLENS
-7 / 2 / 0
Регистрация: 11.10.2011
Сообщений: 78
13.05.2012, 03:02  [ТС] #19
Секунду

Добавлено через 1 минуту
Хм....
0
Avazart
Эксперт С++
7213 / 5385 / 286
Регистрация: 10.12.2010
Сообщений: 23,789
Записей в блоге: 17
13.05.2012, 03:09 #20
Я б не прочь, но возможно стоит создать новую тему, а то админы ругаться могут...

Добавлено через 2 минуты
Кстати если не кртично то можно было бы использовать std::list<> вместо вектора решив проблему порчи имущества

Добавлено через 3 минуты
grizlik78 из-за подобных вещей как я пологаю С# объекты ссылочного типа...
0
TLENS
-7 / 2 / 0
Регистрация: 11.10.2011
Сообщений: 78
13.05.2012, 03:11  [ТС] #21
C++
1
2
3
4
5
6
int abc = 123; // обычная целочисленная переменная
int *p = NULL; // переменная-указатель. Никуда не указывает.
int & ref = abc; // Ну здесь ref это ссылка
p = &abc; // а здесь ты взял указатель на abс и поместил его в p. p Является указателем.
ref = 321; // здесь ref ссылка на abc, изменяется abc = 321
*p = 666; // и тут же указатель
Ну мне понятно что &abc это указатель так как ты здесь оператор извлечения а не (Обьявление)присваивания но я не пойму как p стала фактически ссылкой
0
grizlik78
Эксперт С++
1953 / 1446 / 115
Регистрация: 29.05.2011
Сообщений: 3,005
13.05.2012, 03:17 #22
Цитата Сообщение от TLENS Посмотреть сообщение
я не пойму как p стала фактически ссылкой
А что, 666 присваивается указателю? Нет, переменной abc оно присваивается. Так что же такое *p? Указатель это p, а разыменованный указатель превращается... В элегантные шорты
Ладно, схоластические споры разводить здесь не будем.
1
TLENS
-7 / 2 / 0
Регистрация: 11.10.2011
Сообщений: 78
13.05.2012, 13:29  [ТС] #23
Цитата Сообщение от Avazart Посмотреть сообщение
Кстати если не кртично то можно было бы использовать std::list<> вместо вектора решив проблему порчи имущества
Еще не знаком с std::list сегодня уже спать охота. завтра с утра почитаю и перепишу.

Добавлено через 4 минуты
Цитата Сообщение от grizlik78 Посмотреть сообщение
А что, 666 присваивается указателю? Нет, переменной abc оно присваивается. Так что же такое *p? Указатель это p, а разыменованный указатель превращается... В элегантные шорты
Ладно, схоластические споры разводить здесь не будем.
А я понял, ну да он фактически является ссылкой так как к нему как говорил Avazart можно применять арифметические действия.

Добавлено через 9 минут
Ой он говорил что к указателю а не к ссылке можно применять арифметические действия.
Те я так понял к разыменованному указателю, а точнее к ссылке?

Добавлено через 9 часов 56 минут
Цитата Сообщение от grizlik78 Посмотреть сообщение
Ладно, раз понимаешь, тогда постараюсь запутать. В моём коде &abc это указатель, а *p это, фактически, безымянная ссылка
Ты меня кстати не запутал а наоборот распутал))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2012, 13:29
Привет! Вот еще темы с ответами:

Функция, аргументом которой должна являться ссылку на структуру - C++
По условию, Ввод и вывод в структуру должен выполняться двумя разными функциями, одна в качестве аргумента содержать ссылку на структуру,...

Emplace в std::map. Как добавить элемент в std::map без копирования? - C++
здравствуйте... есть ли способ не писать так: std::map&lt;int, char&gt; ksa; ksa.emplace(std::piecewise_construct, ...

Как создать структуру-список, поля которой — ссылка на такую же структуру - C++
Суть вопроса в том, как создать структуру-список, поля которой - ссылка на сл. элемент(такую же структуру) и ссылка на объект, относящийся...

Как правильно написать функцию, которая редактирует структуру по полю Name и возвращает новую, исправленную структуру?.. - C++
Нужно отредактировать структуру по выбору пользователя. Проблема заключается в создании функции. Подскажите, а лучше покажите, как...


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

Или воспользуйтесь поиском по форуму:
23
Yandex
Объявления
13.05.2012, 13:29
Ответ Создать тему
Опции темы

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