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

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

Войти
Регистрация
Восстановить пароль
 
Nikoys
26 / 26 / 6
Регистрация: 29.12.2010
Сообщений: 90
#1

Map из самописных классов - C++

11.06.2013, 22:20. Просмотров 445. Ответов 3
Метки нет (Все метки)

Доброго всем вечера!
Возник вопрос по созданию карты между двумя самописными классами Author и Book (автор отображается в книгу). Объекты класса содержат разные методы. Для создания карты ключем в Author собираюсь делать строку, которая его характеризирует. Но как это реализовать?
Я так понимаю, нужно каким-то образом реализовать оператор "<", или как?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2013, 22:20     Map из самописных классов
Посмотрите здесь:

map C++
C++ map<> в C, не в C++!
map C++
C++ вопрос по map
Сортировка map C++
Map'ы C++
Map'ы C++
C++ работа с map
C++ map не работает
Приведение map<int, B> к map<int, A> C++
C++ Map of map
Работа с map<string, map<string, string>> C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
11.06.2013, 22:33     Map из самописных классов #2
Именно так.
Или в конструктор мапы передавать функцию сравнения
Tulosba
:)
Эксперт С++
4387 / 3230 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
11.06.2013, 22:36     Map из самописных классов #3
Т.к. значения в std::map упорядочены (для дальнейшего бинарного поиска), для ключа требуется реализовать оператор сравнения ("меньше" в данном случае). Если просто использовать std::map не меняя параметры шаблона.
Например в Вашем случае для Author может быть нечто подобное:
C++
1
2
3
4
bool operator< (const Author& a) const
{
     return this->name < a.name; 
}
Nikoys
26 / 26 / 6
Регистрация: 29.12.2010
Сообщений: 90
12.06.2013, 03:36  [ТС]     Map из самописных классов #4
И все-таки, проблему решить не удалось. Прошу прощения за неграмотность, но все-таки, когда работаешь с мапом, отношение порядка < надо возвращать как дружественную функцию от двух переменных, или как метод класса от одной переменной? На использование константного объявления
C++
1
2
3
4
    bool operator< (const Authour &b) const
    {
        return SName < b.get();
    }
выдается ошибка:
error: passing `const Authour' as `this' argument of `std::string Authour::get()' discards qualifiers|

В чем проблема, не могу понять?

Добавлено через 1 час 50 минут
Ошибка была в том, что метод получения значения поля get() не был константным. Пофиксено.
Тема закрыта.
Yandex
Объявления
12.06.2013, 03:36     Map из самописных классов
Ответ Создать тему
Опции темы

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