Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.03.2010, 01:10
Новичок

Отправить личное сообщение для zho-zig Посмотреть профиль Найти все сообщения от zho-zig
 
Регистрация: 19.10.2009
Сообщений: 7

компаратор для структуры
Доброе время суток! Помогите, пожалуйста, написать компаратор для структуры, чтобы можно было использовать ее в качестве ключей в map.

вот структура

struct pole
{
int x,y,x1,y1,x2,y2;
};

map<pole> p;

Спасибо
  #2  
Старый 31.03.2010, 01:12
гость

 
Сообщений: n/a

memcmp(&pole1, &pole2, sizeof(pole)) < 0
  #3  
Старый 31.03.2010, 01:14
Новичок

Отправить личное сообщение для zho-zig Посмотреть профиль Найти все сообщения от zho-zig
 
Регистрация: 19.10.2009
Сообщений: 7

Я правильно понимаю, что он необходим для поиска, сортировки ключей?
  #4  
Старый 31.03.2010, 01:15
Новичок

Отправить личное сообщение для zho-zig Посмотреть профиль Найти все сообщения от zho-zig
 
Регистрация: 19.10.2009
Сообщений: 7

Если можно, напишите поподробнее. Спасибо!
  #5  
Старый 31.03.2010, 01:31
гость

 
Сообщений: n/a

ну вот как-то так:
Код:
#include <map>
using namespace std;

struct pole
{
int x,y,x1,y1,x2,y2;
};

template<typename T>
struct MemCmpComparator {
    bool operator()(const T &a, const T &b) const {
        return memcmp(&a, &b, sizeof(T)) < 0;
    }
};

map<pole, int, MemCmpComparator<pole> > p;  // pole -> int
  #6  
Старый 31.03.2010, 01:33
гость

 
Сообщений: n/a

Сообщение от zho-zig Посмотреть сообщение
Я правильно понимаю, что он необходим для поиска, сортировки ключей?
Не понял вопрос про сортировку ключей, переформулируйте
  #7  
Старый 31.03.2010, 01:45
Новичок

Отправить личное сообщение для zho-zig Посмотреть профиль Найти все сообщения от zho-zig
 
Регистрация: 19.10.2009
Сообщений: 7

про сортировку я напутал. Спасибо большое за помощь
  #8  
Старый 31.03.2010, 15:27
гость

 
Сообщений: n/a

Сообщение от гость Посмотреть сообщение
ну вот как-то так:
Код:
#include <map>
using namespace std;

struct pole
{
int x,y,x1,y1,x2,y2;
};

template<typename T>
struct MemCmpComparator {
    bool operator()(const T &a, const T &b) const {
        return memcmp(&a, &b, sizeof(T)) < 0;
    }
};

map<pole, int, MemCmpComparator<pole> > p;  // pole -> int
Должен заметить, что это гарантируется, только если отключено выравнивание.
  #9  
Старый 31.03.2010, 15:37
гость

 
Сообщений: n/a

Сообщение от гость Посмотреть сообщение
Должен заметить, что это гарантируется, только если отключено выравнивание.
нет. даже с 64-битным выравниванием будет работать - 32-битные числа всегда пакуются на 32-битной границе.
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу про структуры данных tanchik Математические алгоритмы (другое) 2 16.11.2008 23:34
Задача на структуры данных Destyon Математические алгоритмы (другое) 12 30.09.2008 01:44
Эффекивные Структуры данных гость Графы 0 14.06.2008 22:18
Иерархические структуры данных гость Математические алгоритмы 3 01.05.2008 07:03
Структуры MaxFlow Математические алгоритмы (другое) 9 30.03.2008 13:54