我已对数组进行了排序:
vector<T*> arrs;
我有一个multiset
multiset<T*, sp_t_less<T>> tr;
我有这个:
tr.erase();
tr.insert(arrs.begin(), arrs.end());
我需要转换矢量来设置快速(线性复杂度)。我可以使用std或boost函数吗?
答案 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);
}