Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемма с boost::bimap 
:(
    Опции темы
SenkraD
Дата 11.7.2013, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 2
Всего: 23



снизу пример кода:
Код

#include <boost/bimap.hpp>


struct point
{
    std::size_t x;
    std::size_t y;
    point(std::size_t _x, std::size_t _y)
        : x(_x)
        , y(_y)
    {
    }

};

inline bool operator<(point const& lhs, point const& rhs)
{
    return ((lhs.x < rhs.x) || (lhs.y < rhs.y));
}

inline bool operator==(point const& lhs, point const& rhs)
{
    return ((lhs.x == rhs.x) && (lhs.y == rhs.y));
}

//--------------------------------------------------------------------------------------------------
//
//
int main(int argc, char* argv[])
{
    boost::bimap<std::size_t, point> bm;
    bm.insert(boost::bimap<std::size_t, point>::value_type(1, point(1,1)));
    bm.insert(boost::bimap<std::size_t, point>::value_type(2, point(2,2)));
    bm.insert(boost::bimap<std::size_t, point>::value_type(3, point(3,3)));
    bm.insert(boost::bimap<std::size_t, point>::value_type(4, point(4,4)));
    bm.insert(boost::bimap<std::size_t, point>::value_type(11, point(5,1)));
    bm.insert(boost::bimap<std::size_t, point>::value_type(21, point(1,4)));
    bm.insert(boost::bimap<std::size_t, point>::value_type(31, point(1,6)));
    bm.insert(boost::bimap<std::size_t, point>::value_type(41, point(1,7)));

    std::size_t value = bm.right.at(point(5, 1));

    std::system("pause");
    return 0;
}

//--------------------------------------------------------------------------------------------------
гле bm.right.at(point(5, 1)); дает креш. подскажите, что я делаю не так или чего не хватает типу point



--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
volatile
Дата 11.7.2013, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(SenkraD @  11.7.2013,  02:11 Найти цитируемый пост)
inline bool operator<(point const& lhs, point const& rhs)
{
    return ((lhs.x < rhs.x) || (lhs.y < rhs.y));
}

Логически не последовательная функция.
Для объектов (A,B) может одновременно быть A меньше B   и   B меньше A  smile 

Нужно как-то так:
Код

inline bool operator<(point const& lhs, point const& rhs)
{
    if (lhs.x != rhs.x)
       return lhs.x < rhs.x;
    return lhs.y < rhs.y;
}

PM MAIL   Вверх
SenkraD
Дата 11.7.2013, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 2
Всего: 23



Цитата(volatile @  11.7.2013,  09:33 Найти цитируемый пост)
Логически не последовательная функция.
Для объектов (A,B) может одновременно быть A меньше B   и   B меньше A   
 smile блин, точно. наверное нужно отоспаться, а то чую и не такое скоро писать начну



--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.