- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想知道是否有办法在 multi_index
的随机访问索引上使用 std::partial_sort
或 boost::partial_sort
.
如果我尝试使用 std::patial_sort
,我会收到编译器错误,提示迭代器取消引用是 const,因此我无法编译。我知道为了保持索引的顺序,所有 multi_index
迭代都是 const 迭代器。但是有内部排序函数,但是,boost multi_index 中没有 partial_sort。
最佳答案
随机访问迭代器提供rearrangement , 但不是直接突变。所以,使用代理来做:
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/random_access_index.hpp>
#include <iostream>
using Record = int; // or your user-defined type, of course
namespace bmi = boost::multi_index;
using Table = bmi::multi_index_container<Record,
bmi::indexed_by<
bmi::random_access<bmi::tag<struct RA_index> >
> >;
int main() {
Table table;
for (Record i : { 1, 7, 4, 8, 4, 3, 4, 6, 1, -3, 31 })
table.push_back(i);
// now the partial sort:
{
std::vector<boost::reference_wrapper<Record const> > tmp(table.begin(), table.end());
std::partial_sort(tmp.begin(), tmp.begin()+8, tmp.end());
// apply back to RA_index
table.get<RA_index>().rearrange(tmp.begin());
}
std::cout << "Partially sorted: ";
std::copy(table.begin(), table.end(), std::ostream_iterator<Record>(std::cout, " "));
}
打印
Partially sorted: -3 1 1 3 4 4 4 6 8 7 31
关于c++ - partial_sort on boost multi_index 的随机访问索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32567547/
根据 http://www.cplusplus.com/reference/algorithm/partial_sort/ , middle 参数是: Random-access iterator p
我有一个 SetPartitionVector派生自 vector 的类.我想 partial_sort此 vector 使用自定义比较函数,但我在编译时出错。 bool ScalableSummar
假设这样一种情境,有一个存有 100 万个元素的容器,但我们只想从中提取出值最小的 10 个元素,该如何实现呢? 通过前面的学习,读者可能会想到使用 sort() 或者 stable_sort() 排
根据 cppreference.com,C++ STL 排序算法的复杂度为: 排序:O(N log(N)) partial_sort:“大约”O(N log(M)),其中 M 是距离(中间优先) nt
我想知道是否有办法在 multi_index 的随机访问索引上使用 std::partial_sort 或 boost::partial_sort . 如果我尝试使用 std::patial_sort
我想知道为什么 c++ 标准要求 std::sort 应该只采用随机访问迭代器?我没有看到优势,因为 std::sort和 std::list::sort复杂度为 N*log(N)。将 std::so
我正在尝试为可通过多种条件排序的数据集实现分页算法。不幸的是,虽然其中一些标准可以在数据库级别实现,但有些必须在应用程序级别完成(我们必须与另一个数据源集成)。我们有一个分页(实际上是无限滚动)需求,
以下两种方法之间是否存在显着差异?方式 1 使用 sort 或 partial_sort,具体取决于 vector 的大小,而方式 2 始终使用 partial_sort。我觉得方法 2 更有吸引力,
有两个数组,一个用于ids,一个用于scores,我想将这两个数组存储到一个std::map中,并使用std::partial_sort 找到五个最高分,然后打印他们的 id那么,有没有可能在 std
我是一名优秀的程序员,十分优秀!