在c ++中,multiset lower_bound或upper_bound对集合进行排序。什么是时间复杂度?

时间:2015-06-01 13:08:28

标签: c++

从这个例子和描述中, http://www.cplusplus.com/reference/set/multiset/lower_bound/

// multiset::lower_bound/upper_bound
#include <iostream>
#include <set>

int main ()
{
  std::multiset<int> mymultiset;
  std::multiset<int>::iterator itlow,itup;

  for (int i=1; i<8; i++) mymultiset.insert(i*10); // 10 20 30 40 50 60 70

  itlow = mymultiset.lower_bound (30);             //       ^
  itup = mymultiset.upper_bound (40);              //             ^

  mymultiset.erase(itlow,itup);                    // 10 20 50 60 70

  std::cout << "mymultiset contains:";
  for (std::multiset<int>::iterator it=mymultiset.begin(); it!=mymultiset.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

我认为在c ++中,multiset lower_bound或upper_bound对集合进行排序。但是这种操作的时间复杂度是多少? 它是o(nlogn)如快速排序?或者有人知道这个操作在里面真正做了什么?

1 个答案:

答案 0 :(得分:1)

  

我认为在c ++中,multiset lower_bound或upper_bound对集合进行排序。

没有。 std::multiset 始终已排序。

所有std::multiset成员函数设定内容已经排序。

  

但是这种操作的时间复杂度是多少?它是o(nlogn),如快速排序?

根据your own link

  

复杂性

     

对数大小。

那是O(log n)。