1つsequenced
のビューからのみ値を削除できる、2 つのビューを持つマルチインデックスを構築したいと考えています。
コード内:
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/sequenced_index.hpp>
#include <algorithm>
#include <iterator>
#include <vector>
using namespace boost::multi_index;
typedef multi_index_container<
int,
indexed_by<
sequenced<>,
sequenced<>
>
> container;
int main()
{
container c;
std::vector<int>
// complete
data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
// only uneven
uneven_data;
std::copy_if(begin(data), end(data),
std::back_inserter(uneven_data),
[](int i) { return i % 2 != 0; });
container cont;
std::copy(begin(data), end(data), std::back_inserter(cont));
auto& idx0 = cont.get<0>();
auto& idx1 = cont.get<1>();
// remove all uneven from idx1
idx1.remove_if([](int i) { return i % 2 == 0; });
// behavior I would like to be true, but now both idx0 and idx1 are
// equal to uneven_data
assert(std::equal(begin(data), end(data), begin(idx0)));
assert(std::equal(begin(uneven_data), end(uneven_data), begin(idx1)));
return 0;
}
このようなことは可能boost::multi_index
ですか?