Мне интересно, можем ли мы перебирать контейнер Boost.Multi_Index в обратном порядке, аналогично вектору STL rbegin()
и rend()
.
Приведенный ниже код в основном заимствован из здесь. При переборе leg_index (последние несколько строк) и выводе имен животных имена животных отображаются в порядке возрастания в зависимости от количества ног. Мне нужно сделать то же самое в порядке убывания.
Любая идея, как это сделать?
Благодарю вас!
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/sequenced_index.hpp>
#include <boost/multi_index/ordered_index.hpp>
#include <boost/multi_index/random_access_index.hpp>
#include <boost/multi_index/member.hpp>
#include <string>
#include <iostream>
using namespace boost::multi_index;
struct animal
{
std::string name;
int legs;
};
typedef multi_index_container<
animal,
indexed_by<
sequenced<>,
ordered_non_unique<
member<
animal, int, &animal::legs
>
>,
random_access<>
>
> animal_multi;
int main()
{
animal_multi animals;
animals.insert({"cat", 4});
animals.insert({"shark", 0});
animals.insert({"spider", 8});
auto &legs_index = animals.get<1>();
auto it = legs_index.begin();
auto end = legs_index.end();
for (; it != end; ++it)
std::cout << it->name << '\n';
}
rbegin()
иrend()
? - person Tanner Sansbury   schedule 01.09.2015rbegin()
иrend()
предоставляются и функционируют должным образом. Ошибки компиляции, вероятно, связаны с тем, чтоinsert()
ожидает два аргумента (позиция и элемент); рассмотрите возможность использованияpush_back()
вместо этого. (демонстрация) - person Tanner Sansbury   schedule 01.09.2015ordered_non_unique
в сочетании сsequenced
, я получу другой интерфейс для индекса, чем тот, который я получил бы, если бы я выбралhashed_unique
илиhashed_non_unique
. - person hebbo   schedule 02.09.2015