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

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

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

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

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

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

Обращение к элементам vector, который находится в map, находящийся в map - C++
Всем добрый день! Имеется такой контейнер. Как обращаться к элементам вектора и как пушбэчить его? map &lt;int,map&lt;int,vector&lt;int&gt; &gt;...

Вынести методы из классов Panel и PictureBox (явная реализация методов базовых абстрактных классов) - C++
Тема: Множественное наследование. Явная реализация методов базовых абстрактных классов. Как вынести методы из классов Panel и...

Реализация отношения классов типа двунаправленная ассоциация, UML, порядок объявления классов, неполный класс - C++
Доброго времени суток! Осваивая UML, решил реализовать отношение двунаправленной ассоциации по диаграмме: У одного владельца...

Приведение map<int, B> к map<int, A> - C++
class A {}; class B : public A {}; unordered_map&lt;int, shared_ptr&lt;B&gt; &gt; bs; Как привести bs к unordered_map&lt;int, shared_ptr&lt;A&gt;...

map - C++
объясните пожалуйсто как это работает, почему тут &lt;string, int, less&lt;string&gt;&gt; так много перемееных #include &lt;map&gt; #include &lt;string&gt; ...

Заполнить map - C++
Как заполнить этот &quot;мар&quot; несколькими значениями к фамилии? #include&lt;iostream&gt; using namespace std; #include&lt;vector&gt; #include...

Map Hack На С++ - C++
Народ как можно написать Map Hack на С++ для игры Warcraft 3, ну как бы чит для сетевой игры, помогите пожалуйста

Сортировка в map - C++
Как отсортировать в map не по ключу, а по значению для вывода.

Двумерный MAP - C++
Собственно, пытаюсь создать конструкцию типа: #include &lt;map&gt; using namespace std; int main() { map&lt;int, map&lt;int, int&gt;&gt; MainMap;...

Трабл с map - C++
Доброго времени суток В input.txt лежат названия поездов, время их отправления и прибытия. Расстояние - константа. Нужно вывести самый...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
11.06.2013, 22:33     Map из самописных классов #2
Именно так.
Или в конструктор мапы передавать функцию сравнения
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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 из самописных классов
Ответ Создать тему
Опции темы

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