C ++ multiset从排序向量

时间:2017-04-23 21:28:09

标签: c++ set multiset

我已对数组进行了排序:

vector<T*> arrs;

我有一个multiset

multiset<T*, sp_t_less<T>> tr;

我有这个:

tr.erase();
tr.insert(arrs.begin(), arrs.end());        

我需要转换矢量来设置快速(线性复杂度)。我可以使用std或boost函数吗?

1 个答案:

答案 0 :(得分:0)

如果您的数组已经排序,那么您可以使用insert - 变体与hint和&#34;告诉&#34;最后开始搜索的插入操作(参见multiset::insert):

iterator insert( iterator hint, const value_type& value )
  

**复杂性**   如果插入发生在提示之后的位置,则为摊销常数,否则为对数的容器。

因此,像以下循环这样的东西应该在线性复杂性方面完成工作(假设arrs已排序):

for (auto t : arrs) {
  tr.insert(tr.end(), t);   
}