📜  C++ 中的 find_by_order()

📅  最后修改于: 2021-09-06 05:40:55             🧑  作者: Mango

find_by_order()Ordered Set内置函数,它是C++ 中基于策略的数据结构。基于策略的数据结构不是C++ 标准模板库的一部分,g++ 编译器支持它们。

有序集是g++基于策略的数据结构,它以排序的顺序维护唯一元素。它以O(logN) 的复杂度执行 STL 中 Set 执行的所有操作。
除此之外,以下两个操作也是以O(logN)复杂度执行的:

find_by_order()函数接受一个键,比如K作为参数,并将迭代器返回到 Set 中的K最大元素。

例子:

下面是 C++ 中find_by_order()函数的实现:

C++14
// C++ program to implement find_by_order()
// for Policy Based Data Structures
  
#include 
  
// Importing header files
#include 
using namespace std;
using namespace __gnu_pbds;
  
// Declaring Ordered Set
typedef tree, rb_tree_tag,
        tree_order_statistics_node_update>
    pbds;
  
// Driver Code
int main()
{
    
      int arr[] = {1, 5, 6, 17, 88};
     int n = sizeof(arr)/sizeof(arr[0]);
    
    pbds S;
    
      // Traverse the array
    for (int i = 0; i < n; i++) {
        
          // Insert array elements
          // into the ordered set
        S.insert(arr[i]);
    }
    
      // Returns iterator to 0-th
      // largest element in the set
    cout << *S.find_by_order(0) << " ";
    
    // Returns iterator to 2-nd
      // largest element in the set
    cout << *S.find_by_order(2);
  
    return 0;
}


输出:
1 6

如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live