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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
#1

Структура в качестве ключа для map - C++

23.08.2013, 13:02. Просмотров 1763. Ответов 20
Метки нет (Все метки)

Доброго времени суток.

Имеется простая структура
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    struct coordinateSet
    {
    public:
 
        coordinateSet(char *X,int *Y)
        {
            this->direction_X = X;
            this->direction_Y = Y;
        }
 
        char* direction_X;
        int* direction_Y;
 
 
        bool operator<(const coordinateSet& a) const
        {
            if(*this->direction_X < *a.direction_X && *this->direction_Y < *a.direction_Y )
                return true;
            return false;
        };
 
        bool operator==(const coordinateSet& a) const
        {
            if(*this->direction_X == *a.direction_X && *this->direction_Y == *a.direction_Y )
                {return true;}
            return false;
        };
 
    };
И такая карта :
C++
1
map<coordinateSet,int> field;
Элемент добавляется, видится нормально. Но операция count выполняется не правильно - выдает "1" в любом случае если поле char* совпадает
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2013, 13:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структура в качестве ключа для map (C++):

MAP в качестве ключа - C++
Есть map&lt;string, map&lt;Language, string&gt; lang; map&lt;string, map&lt;Language, string&gt; &gt;::iterator itr = langHashtable.find(keyLabe); Нахожу...

Map. 0 в качестве ключа [0] - C++
Если создать словарь map и в качестве ключа использовать целые числа. Почему нельзя использовать ключ 0 ? Когда пытаешься вывести, выдает...

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

Каким свойством должен обладать объект для добавления в ассоциативные контейнеры в качестве ключа? - C++
помогите пожалуйста с правильной формулировкой и составлением ответа на такой вопрос: Каким свойством должен обладать объект, чтобы...

В качестве ключа использовать три буквы ФИО студента. (Например, ключ поиска для Сидорова Ивана Кузьмича – СИК - C++
Прошу помочь! Не получается поиск. (Например, ключ поиска для Сидорова Ивана Кузьмича – СИК). Задание для курсовой работы ...

map, условие по отсутствию ключа - C++
У меня есть карта, и нужно организовать операцию, если в карте нет заданного ключа. Я хотел вот так map &lt;int,vector&lt;int&gt;&gt; invert; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 443
23.08.2013, 17:38 #16
Цитата Сообщение от Kseon12 Посмотреть сообщение
Но вообще хотелось узнать как правильно такой вариант сделать
А что мешает посмотреть на реализацию operator< для класса std::pair?
gray_fox
What a waste!
1507 / 1210 / 68
Регистрация: 21.04.2012
Сообщений: 2,545
Завершенные тесты: 3
23.08.2013, 17:40 #17
Цитата Сообщение от Kseon12 Посмотреть сообщение
Но вообще хотелось узнать как правильно такой вариант сделать
http://en.cppreference.com/w/cpp/uti...r/operator_cmp
т.е.
C++
1
2
3
4
5
6
7
if (direction_X < a.direction_X) {
   return true;
} else if (a.direction_X < direction_X) {
   return false;
} else {
   return (direction_Y < a.direction_Y);
}
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
23.08.2013, 17:51  [ТС] #18
Цитата Сообщение от gray_fox Посмотреть сообщение
C++
1
2
3
4
5
6
7
if (direction_X < a.direction_X) {
* *return true;
} else if (a.direction_X < direction_X) {
* *return false;
} else {
* *return (direction_Y < a.direction_Y);
}
Да, работает, спасибо. Теперь осталось понять суть )
gray_fox
What a waste!
1507 / 1210 / 68
Регистрация: 21.04.2012
Сообщений: 2,545
Завершенные тесты: 3
23.08.2013, 17:58 #19
Цитата Сообщение от Kseon12 Посмотреть сообщение
Теперь осталось понять суть )
Цитата Сообщение от kamre Посмотреть сообщение
Читали?
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
23.08.2013, 18:05 #20
Цитата Сообщение от Kseon12 Посмотреть сообщение
C++
1
coordinateSet(char *X,int *Y)
Цитата Сообщение от Kseon12 Посмотреть сообщение
C++
1
coordinateSet tmp(TOP_COORDINATES[j],i);
что то я не понимаю, ту т же ни TOP_COORDINATES[j] ни i не адреса, как это работает О_О

Добавлено через 20 секунд
не указатели (поправка)
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
23.08.2013, 18:32  [ТС] #21
Цитата Сообщение от aLarman Посмотреть сообщение
что то я не понимаю, ту т же ни TOP_COORDINATES[j] ни i не адреса, как это работает О_О
Я просто указатели со структуры убрал за это время
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2013, 18:32
Привет! Вот еще темы с ответами:

Контейнер map: реализовать проверку на уникальность ключа - C++
Приветствую форумчан, имеется контейнер map с элементами struct Elemnts { int key; char *word; }; Главное требование контейнера...

Map с функциями: Как использовать функции в качестве объектов - C++
Создал map, в котором по знаку операции( '^' к примеру) ищется бинарная операция. Вот код. #include &lt;iostream&gt; #include &lt;map&gt; ...

Структура в качестве параметра шаблона - C++
Добрый день, возник вопрос при выполнении КР по программированию: Можно ли передать структуру в качестве параметра в шаблона класса. То...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.08.2013, 18:32
Ответ Создать тему
Опции темы

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