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

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

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

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

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

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

Map, List, работа со ссылками на экземпляры классов - C++
Здравствуйте! Есть такой вопрос: если ли разница в том, каким образом делать .push_back(buf) в список listOfFreinds ? Я представил там оба...

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

Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std::map? - C++
Здравствуйте. Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std map? Например: std::map...

Как вставить элемент и вывести элементы на экран в map<string, map<string,int>> ? - C++
У меня есть map&lt;string, map&lt;string,int&gt;&gt;, в него надо добавить элементы (типа Ivanov potato 200) Использовать именно map&lt;string,...

Как вставить map в map - C++
есть такой map map &lt; INT64 , map &lt;INT64 , map&lt; wArray , int &gt; &gt; &gt; tMenu; как его заполнить? пробовал так ...

Emplace в std::map. Как добавить элемент в std::map без копирования? - C++
здравствуйте... есть ли способ не писать так: std::map&lt;int, char&gt; ksa; ksa.emplace(std::piecewise_construct, ...

3
I.M.
565 / 548 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
11.06.2013, 22:33 #2
Именно так.
Или в конструктор мапы передавать функцию сравнения
1
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
11.06.2013, 22:36 #3
Т.к. значения в std::map упорядочены (для дальнейшего бинарного поиска), для ключа требуется реализовать оператор сравнения ("меньше" в данном случае). Если просто использовать std::map не меняя параметры шаблона.
Например в Вашем случае для Author может быть нечто подобное:
C++
1
2
3
4
bool operator< (const Author& a) const
{
     return this->name < a.name; 
}
1
Nikoys
26 / 26 / 6
Регистрация: 29.12.2010
Сообщений: 90
12.06.2013, 03:36  [ТС] #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() не был константным. Пофиксено.
Тема закрыта.
0
12.06.2013, 03:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2013, 03:36
Привет! Вот еще темы с ответами:

Разработать иерархию классов, демонстрирующее работу с коллекцией объектов разных классов - C++
Задание: Разработать в соответствии с индивидуальным заданием иерархию классов и приложение, демонстрирующее работу с коллекцией объектов...

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

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

Преобразования объектов классов в объекты других классов - C++
Задача типа обмен валют. Нужно конвертировать старый фунт стерлинг(фунт, шиллинг и пенсы) в доллары и обратно, по курсу 1 фунт = 50...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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