从这个例子和描述中, 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)如快速排序?或者有人知道这个操作在里面真正做了什么?
答案 0 :(得分:1)
我认为在c ++中,multiset lower_bound或upper_bound对集合进行排序。
没有。 std::multiset
始终已排序。
所有std::multiset
成员函数设定内容已经排序。
但是这种操作的时间复杂度是多少?它是o(nlogn),如快速排序?
复杂性
对数大小。
那是O(log n)。