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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
TLENS
-7 / 2 / 0
Регистрация: 11.10.2011
Сообщений: 77
13.05.2012, 01:21     Как передавать ссылку на структуру в map? #1
Надо два контейнера один вектор со структурами второй мап с сылками на те структуры.
Но вот проблема в 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();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2012, 01:21     Как передавать ссылку на структуру в map?
Посмотрите здесь:

C++ Как передавать аргументы консольному приложению в Debug?
C++ C++ как правильно передавать функцию как параметр?
как передавать структуру в массив? C++
Как правильно написать функцию, которая редактирует структуру по полю Name и возвращает новую, исправленную структуру?.. C++
C++ Можно ли массив передавать как параметр?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TLENS
-7 / 2 / 0
Регистрация: 11.10.2011
Сообщений: 77
13.05.2012, 03:11  [ТС]     Как передавать ссылку на структуру в map? #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 стала фактически ссылкой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
13.05.2012, 03:17     Как передавать ссылку на структуру в map? #22
Цитата Сообщение от TLENS Посмотреть сообщение
я не пойму как p стала фактически ссылкой
А что, 666 присваивается указателю? Нет, переменной abc оно присваивается. Так что же такое *p? Указатель это p, а разыменованный указатель превращается... В элегантные шорты
Ладно, схоластические споры разводить здесь не будем.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2012, 13:29     Как передавать ссылку на структуру в map?
Еще ссылки по теме:

Как создать структуру-список, поля которой — ссылка на такую же структуру C++
C++ Как в функции my_function преобразовать ссылку на базовый класс в ссылку на класс B или С
C++ Как вставить map в map

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

Или воспользуйтесь поиском по форуму:
TLENS
-7 / 2 / 0
Регистрация: 11.10.2011
Сообщений: 77
13.05.2012, 13:29  [ТС]     Как передавать ссылку на структуру в map? #23
Цитата Сообщение от Avazart Посмотреть сообщение
Кстати если не кртично то можно было бы использовать std::list<> вместо вектора решив проблему порчи имущества
Еще не знаком с std::list сегодня уже спать охота. завтра с утра почитаю и перепишу.

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

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

Добавлено через 9 часов 56 минут
Цитата Сообщение от grizlik78 Посмотреть сообщение
Ладно, раз понимаешь, тогда постараюсь запутать. В моём коде &abc это указатель, а *p это, фактически, безымянная ссылка
Ты меня кстати не запутал а наоборот распутал))
Yandex
Объявления
13.05.2012, 13:29     Как передавать ссылку на структуру в map?
Ответ Создать тему
Опции темы

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