Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сортировка multiset

44K
10 мая 2010 года
m9yt
25 / / 27.02.2010
Привет всем.
Мне необходимо отсортировать контейнер multimap по убыванию, в контейнере находятся объекты моего класса, в котором 2 поля.Сортировать нужно по 1-вому полю типа string.
При создании контейнера элементы благополучно сортируются по возрастанию( в классе перегружен оператор <).
Но вот что написано в методичке:
"некоторые алгоритмы могут не поддерживать используемые в вашей программе контейнеры. Например, алгоритм sort не поддерживает контейнеры, которые не имеют итераторов произвольного доступа. В этом случае следует написать свой алгоритм. Например, для стека алгоритм сортировки может выполняться следующим образом: переписать стек в вектор, отсортировать вектор, переписать вектор в стек.
При перемещении элементов ассоциативного контейнера в неассоциативный перемещаются только данные (ключи не перемещаются). И, наоборот, при перемещении элементов неассоциативного контейнера в ассоциативный должен быть сформирован ключ.
Вопрос в том, как сформировать этот ключ?

Вот мои наработки:
Сама функция сортировки.
Вектор сортируется как надо, но при вставке в мультисет все записывается наоборот!
 
Код:
class cmp{
public:
    bool operator()(country ob1, country ob2){
        return (ob1.get_name()>ob2.get_name());
    }
};

Код:
void my_sort(multiset<country> & SET)
{
    vector<country> v;
    multiset<country>::iterator p;
    vector<country>::iterator d;
    p=SET.begin();
    for(p; p!=SET.end(); p++)
        v.push_back(*p);
    d=v.begin();
    sort(d, d=v.end(), cmp());
    d=v.begin();
    SET.clear();
    for(d; d!=v.end(); d++)
        SET.insert(*d);
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог