与分页的红色黑树

时间:2013-12-09 03:49:13

标签: c++ data-structures stl

正如大多数人所知,C ++中的Set Container通常被实现为一个红黑树,当迭代容器时,条目按顺序出现,这可以被利用。

然而,我想对容器的迭代进行分页,如果容器包含,则为例:

set<int> set;
// insert some data
for(auto s : set)
    cout << s << " " << endl;

1, 3, 5, 7, 9, 11, 13, 15

我想在容器range(2,5)上进行范围查询yealding:向量3, 5, 7,这似乎与集合无关,是否可以在任何STL容器上进行分页,或者这是你必须自己实施的情况吗?

1 个答案:

答案 0 :(得分:1)

对于索引,只有一种方法http://www.cplusplus.com/reference/iterator/advance/ 但它具有线性时间复杂度

set<int>::iterator lower = s.begin();
std::advance(lower, 2);
auto upper = lower;
std::advance(upper, 6-2);
std::copy(lower, upper, std::ostream_iterator<int>(std::cout, " "));