std::map <GUID, mystruct>
От: Аноним  
Дата: 02.01.10 20:10
Оценка:
Здравствуйте
Возможно ли стандартными средствами использовать в качестве ключа для std::map структуру, наподобие GUID? Или придется переписывать методы поиска (или еще какие-то?)? Если придется что-то дописывать, подскажите, какие именно методы. Заранее благодарен
Сильно не бейте, я в STL начинающий
Re: std::map <GUID, mystruct>
От: Sheridan Россия  
Дата: 02.01.10 20:20
Оценка: -2
Приветствую, Анонимус, вы писали:

> Здравствуйте

> Возможно ли стандартными средствами использовать в качестве ключа для std::map структуру, наподобие GUID? Или придется переписывать методы поиска (или еще какие-то?)? Если придется что-то дописывать, подскажите, какие именно методы. Заранее благодарен
> Сильно не бейте, я в STL начинающий

емнип надо объявить operator== и велкам. Точно не помню конечно какой именно operator — читай лог компилятора — он на пальцах покажет чего ему не хватает.
avalon 1.0rc3 rev 306, zlib 1.2.3 (17.12.2009 01:06:14 MSK +03:00)(Qt 4.6.0)
Matrix has you...
Re: std::map <GUID, mystruct>
От: Олег К.  
Дата: 02.01.10 20:32
Оценка: 1 (1)
А>Сильно не бейте, я в STL начинающий
У типа ключа должен быть определен оператор меньше.
Re: std::map <GUID, mystruct>
От: ononim  
Дата: 02.01.10 21:03
Оценка: 2 (2) +2
А>Здравствуйте
А>Возможно ли стандартными средствами использовать в качестве ключа для std::map структуру, наподобие GUID? Или придется переписывать методы поиска (или еще какие-то?)? Если придется что-то дописывать, подскажите, какие именно методы. Заранее благодарен
А>Сильно не бейте, я в STL начинающий
варианты:
1) предикат 3м шаблонным параметром специализации мапы
2) обернуть GUID в структуру с определенным operator< (...) const
Как много веселых ребят, и все делают велосипед...
Re: std::map <GUID, mystruct>
От: sraider http://dvinogradov.blogspot.com
Дата: 02.01.10 23:45
Оценка: 4 (3) +1
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте

А>Возможно ли стандартными средствами использовать в качестве ключа для std::map структуру, наподобие GUID? Или придется переписывать методы поиска (или еще какие-то?)? Если придется что-то дописывать, подскажите, какие именно методы. Заранее благодарен
А>Сильно не бейте, я в STL начинающий

самый простой вариант:
inline bool operator < (const GUID & lhs, const GUID & rhs)
{
    return memcmp(&lhs, &rhs, sizeof(GUID)) < 0;
}

std::map<GUID, mystruct> map;
Re[2]: std::map <GUID, mystruct>
От: Nicky_  
Дата: 03.01.10 09:38
Оценка:
Здравствуйте, sraider, Вы писали:

самый простой вариант:
S>
inline bool operator < (const GUID & lhs, const GUID & rhs)
S>{
S>    return memcmp(&lhs, &rhs, sizeof(GUID)) < 0;
S>}

S>std::map<GUID, mystruct> map;


Спасибо, как раз то что нужно
Спасибо всем ответившим
Re: std::map <GUID, mystruct>
От: Alexander G Украина  
Дата: 03.01.10 15:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Возможно ли стандартными средствами использовать в качестве ключа для std::map структуру, наподобие GUID? Или придется переписывать методы поиска (или еще какие-то?)? Если придется что-то дописывать, подскажите, какие именно методы. Заранее благодарен


Не хочешь хеш-мапы использовать, вроде boost::unordered ?
Отсортированность по GUIDам вряд ли же нужна. Дописать тогда хеш-функцию, оно не намного сложнее чем сравнение, и можно взять UuidHash.
Русский военный корабль идёт ко дну!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.