Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для TrueBit
100 / 100 / 47
Регистрация: 19.11.2012
Сообщений: 195

Не могу разобраться с map(STL)

20.11.2012, 22:06. Показов 1161. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Недавно понадобилось использование ассоциативного массива map(STL), дабы сократить код программы. Но возникли сложности. В кратце в программе несколько структур, функции и операции с файлами. При использовании map в структурах и функциях получаются некорректные результаты. При этом аналогичный код написаный в main работает без ошибок. В чем может быть ошибка? Как заставить работать map в структурах и функциях?. Вот 2 примера(рабочий и нерабочий):

рабочий:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//#include "main.h"
#include <iostream>
#include <map>
 
using namespace std;
 
int main() {
    map<char*,int> vars;
    map<char*,int>::const_iterator ip;
    char data[]="hello2";
    vars["hello1"]=2;
    vars[data]=4;
 
    for( ip = vars.begin(); ip != vars.end() ; ++ip ) {
        cout << ip->first << " = " << ip->second << endl;
    }
    getchar();
    return 0;
}
нерабочий:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//#include "main.h"
#include <iostream>
#include <map>
 
using namespace std;
 
map<char*,int> vars;
 
void fill() {
    char data[]="hello2";
    vars["hello1"]=2;
    vars[data]=4;
}
 
void print() {
    map<char*,int>::const_iterator ip;
    for( ip = vars.begin(); ip != vars.end() ; ++ip ) {
        cout << ip->first << " = " << ip->second << endl;
    }
}
 
int main() {
 
    fill();
    print();
 
    getchar();
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.11.2012, 22:06
Ответы с готовыми решениями:

Не могу разобраться с stl в частности с map;
Есть map&lt;myClass, int, sort_name&gt; eleaments; При добавлении в контейнер новых элементов бинарное дерево строится из результата сравнения...

Не могу разобраться как обновить в std::map<std::string, вектор_структур>
Не могу разобраться как обновить вектор структур после его добавления в map без удаления и перезаписи struct pStruct { int...

Map stl
Не могу понять, почему не находит через h1.find(argv). когда argv == &quot;-o&quot; vs пишет &quot;itr = (0xcdcdcdcd &lt;Ошибка при чтении символов...

2
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
20.11.2012, 22:15
C++
1
2
3
4
5
6
7
8
void fill() {
    char data[]="hello2";//локальная переменная
    vars["hello1"]=2;
    vars[data]=4;
    //уничтожение локальной переменной(очищение памяти) перед выходом из функции
    //в vars теперь хранится указатель на очищенную память, в которой может быть все, 
    //что угодно, в данном случае мусор
}
Советы:
1) Используйте string вместо char*. В данном случае это полностью решит проблему.
2) Не делайте мап глобальным, лучше передавать его функции в качестве аргумента. Это вопрос стиля.
1
 Аватар для TrueBit
100 / 100 / 47
Регистрация: 19.11.2012
Сообщений: 195
20.11.2012, 22:36  [ТС]
Ага, спасибо, буду пробовать. В конечной реализации он размещен под меткой private: доступ через функции класса. Глобальное объявление я приводил для примера.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2012, 22:36
Помогаю со студенческими работами здесь

STL map
Вопрос:как мне узнать что не создавался map с заданым str? #include &lt;iostream&gt; #inlclude &lt;map&gt; #include &lt;string&gt; using...

stl map
где можно прочитать о stl map? подскажите книги..

STL :: map
Столкнулся с такой проблемой: Нужно вставить в отсортированную map-таблицу элемент. Использую: myMap.insert(myIterator,pair&lt;type1,...

Вопрос об map STL
Как вивести map? list&lt;int&gt; l; for (int i=1; i&lt;=5; i++) l.push_back(i); map&lt;int,list&lt;int&gt;&gt; a; int d = 9; int f = 5; ...

Конструктор с полем STL map
Всем привет. Не могу понять, как правильно написать конструктор в таком классе(код ниже). В моем исполнении - ошибка error C2100: ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru