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

Map и указатель на ф-цию - C++

Восстановить пароль Регистрация
 
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
26.10.2011, 00:02     Map и указатель на ф-цию #1
Вечер добрый,
перешел на вижуал студио с МС компилером, после мингы, не могу понять почему данный код
на мингве успешно выполняется, а на МС компилере нет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
bool comp (const std::string &left_str, 
    const std::string &right_str)
{
    return (left_str > right_str) ? true
        : false;
}
 
 
std::map < std::string, int, bool (*) (const std::string &left_str, const std::string &right_str) > 
                    new_map(&comp);
 
new_map.insert(std::make_pair("a", 1));
new_map.insert(std::make_pair("d", 4));
new_map.insert(std::make_pair("c", 3));
new_map.insert(std::make_pair("b", 2));
 
std::map<std::string, int>::const_iterator
    map_iter = new_map.begin();
 
for ( ; map_iter != new_map.end(); ++map_iter)
    std::cout << map_iter->first << std::endl;
выкидает:
Error 1 error C2440: 'initializing' : cannot convert from 'std::_Tree_iterator<_Mytree>' to 'std::_Tree_const_iterator<_Mytree>' c:\users\burzum\documents\visual studio 2010\projects\hello\hello\hello.cpp 19 1 hello

и

Error 2 error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'std::_Tree_const_iterator<_Mytree>' (or there is no acceptable conversion) c:\users\burzum\documents\visual studio 2010\projects\hello\hello\hello.cpp 21 1 hello
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2011, 00:02     Map и указатель на ф-цию
Посмотрите здесь:

Как правильно вызвать пользовательскую ф-цию C++
C++ Куда будет указывать указатель в std::map<string,pointer *>?
Вопрос по программе. Нужно протабулировать ф-цию C++
Описать математическую ф-цию C++
Указатель на ф-цию член класса C++
C++ Указатель на ф-цию в структуре
C++ Как вставить map в map
C++ Разработать ф-цию типа float

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
26.10.2011, 00:55     Map и указатель на ф-цию #2
Компиляция идет с правилами C++0x? Может cbegin()/cend() ?

А вообще. Контейнер не константый, а итератор пытаетесь взять константный. Не гуд.
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
26.10.2011, 01:22  [ТС]     Map и указатель на ф-цию #3
Цитата Сообщение от ForEveR Посмотреть сообщение
Компиляция идет с правилами C++0x? Может cbegin()/cend() ?

А вообще. Контейнер не константый, а итератор пытаетесь взять константный. Не гуд.
не катит cbegin()/cend(), брал обычный не константный итератор тоже самое, кстати, а где эти правила C++0x можно врубить или вырубить у меня студия 2010

Добавлено через 5 минут
все сделал, вот коректный вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
std::map < std::string, int, bool (*) (const std::string &left_str, const std::string &right_str) > new_map(comp);
new_map.insert(std::make_pair("a", 1));
new_map.insert(std::make_pair("d", 4));
new_map.insert(std::make_pair("c", 3));
new_map.insert(std::make_pair("b", 2));
 
std::map<std::string, int, bool (*) (const std::string &left_str, const std::string &right_str)>::const_iterator
    map_iter = new_map.cbegin();
 
for ( ; map_iter != new_map.cend(); ++map_iter)
    std::cout << map_iter->first << std::endl;
вся проблема была в этой строке:
C++
1
2
std::map<std::string, int, bool (*) (const std::string &left_str, const std::string &right_str)>::const_iterator
    map_iter = new_map.cbegin();
Могу предположить что по новому стандарту итератор надо объявлять тоже с полными параметрами, будь-то указатель на ф-цию
Yandex
Объявления
26.10.2011, 01:22     Map и указатель на ф-цию
Ответ Создать тему
Опции темы

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