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

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

Войти
Регистрация
Восстановить пароль
 
greenlight
 Аватар для greenlight
39 / 20 / 7
Регистрация: 23.01.2013
Сообщений: 104
Завершенные тесты: 1
#1

Map stl - C++

11.02.2013, 20:00. Просмотров 713. Ответов 8
Метки нет (Все метки)

Не могу понять, почему не находит через h1.find(argv[1]). когда argv[1] == "-o"
vs пишет "itr = (0xcdcdcdcd <Ошибка при чтении символов строки.>, true (205))"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main(int argc, char** argv)
{
    std::map<char*, bool>h1;
    h1.insert(pair<char*, bool>("-o", true));
    h1.insert(pair<char*, bool>("-a", false));
    std::map<char*, bool>::const_iterator itr;
    //itr = h1.find("-o"); // работает
    //itr = h1.find(argv[1]); // не работает
    if(itr != h1.end())
        cout << itr->first << "\n" << itr->second;
    else cout << "Not found";
 
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2013, 20:00     Map stl
Посмотрите здесь:

C++ Вопрос об map STL
C++ Map STL - максимальный объем памяти
STL :: map C++
stl map C++
C++ Не могу разобраться с map(STL)
STL map C++
Работа с библиотекой STL, контейнер map C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6471 / 2246 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
11.02.2013, 20:01     Map stl #2
Цитата Сообщение от greenlight Посмотреть сообщение
char*
указатель, а не строка. Ищешь ты не содержимому строки, а по адресу, что в указателе, подозреваю.
Wolkodav
 Аватар для Wolkodav
601 / 454 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
11.02.2013, 20:43     Map stl #3
Это вообще говоря странно, а вы там точно передаёте аргумент в argv? Проверьте перед вызовом find argv[1]
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
11.02.2013, 21:06     Map stl #4
Потому что char * это указатель а не строка. Используйте std::string.
Jupiter
Каратель
Эксперт C++
6547 / 3967 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.02.2013, 21:09     Map stl #5
Цитата Сообщение от Toshkarik Посмотреть сообщение
Используйте std::string
или компаратор
greenlight
 Аватар для greenlight
39 / 20 / 7
Регистрация: 23.01.2013
Сообщений: 104
Завершенные тесты: 1
11.02.2013, 22:14  [ТС]     Map stl #6
Всем спасибо. Я понял.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
12.02.2013, 00:29     Map stl #7
И забудь про строки в форме char*, раз уж пользуешься такими высокоуровневыми абстракциями, как map.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
12.02.2013, 01:00     Map stl #8
и лучше использовать std::make_pair() .
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2013, 04:26     Map stl
Еще ссылки по теме:

STL(map). Где инициализировать массив? C++
Контейнер map и алгоритмы STL: несовместимость? C++
Stl map: Как вызвать деструктор мапа C++
C++ STL. Map, vector. Строки
Примеры алгоритмов для STL map C++

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
12.02.2013, 04:26     Map stl #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <map> 
#include <utility> 
#include <string> 
#include <iostream> 
#include <stdio.h> 
using namespace std;
 
 
int main(int argc, char** argv)
{
    std::map<string, bool>h1;
    h1.insert(pair<string, bool>("-o", true));
    h1.insert(pair<string, bool>("-a", false));
    std::map<string, bool>::const_iterator itr;
    //itr = h1.find("-o"); // работает
    itr = h1.find(argv[1]); // не работает
    if(itr != h1.end())
        cout << itr->first << "\n" << itr->second;
    else cout << "Not found";
 
    getchar();
    return 0;
}
Yandex
Объявления
12.02.2013, 04:26     Map stl
Ответ Создать тему
Опции темы

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