c++ - 具有自定义比较器和 O(n) 时间的 priority_queue c++
问题描述
我正在搜索,但没有找到使用自定义比较器创建priority_queue 的简单方法,但这也需要线性时间来创建priority_queue 中的元素。
可以使用以下方法在线性时间内创建一个 priority_queue:
vector<int> arr = {1,2,3,4};
priority_queue<int> pq(arr.begin(),arr.end());
并且可以使用自定义比较器创建 priority_queue
auto cmp = [](int p1, int p2){return p1<p2};
priority_queue<int,vector<int>,decltype(cmp)> pq(cmp);
我想知道是否可以做这样的事情:
priority_queue<int,vector<int>,decltype(cmp)> pq(cmp,points.begin(),points.end());
因为如果我使用自定义比较器创建 priority_queue 并在使用 push 插入值之后,时间复杂度将为 O (nlg (n))
解决方案
Assuming points
is a container containing std::vector<int>
s, this is how you could define your priority queue:
std::priority_queue<std::vector<int>,
std::vector<std::vector<int>>,
decltype(cmp)> pq(points.begin(), points.end(), cmp);
推荐阅读
- json - 我有 A 网站的 cookie,但 B 网站必须登录才能使用
- reactjs - `npm run storybook` 在新的反应项目中失败
- powerbi - PowerBI 应用程序挂起,显示“正在构建您的应用程序...”
- php - PHP中HTTP连接的开放式方法?
- r - 如何使用 fitdist 的结果在 R 中创建概率分布?
- dgraph - dql突变添加重复记录
- node.js - 注销后节点 Express CSRF 令牌未失效
- python-3.x - Tkinter:如何绑定 Shift
- javascript - 根据关键帧动画状态将不透明度设置为 svg 路径元素
- reactjs - 我正在制作井字游戏 React 应用程序