C++11中emplace的使用
来源:互联网 发布:java游戏破解合集 编辑:程序博客网 时间:2024/06/11 22:18
最近在刷题的时候看别人优雅的代码,发现一个叫做“emplace”的新朋友,检索了网上的相关资料后知道,这是C++11中加入的新特性,emplace_back能通过参数构造对象,不需要拷贝或者移动内存,相比push_back能更好地避免内存的拷贝与移动,使容器插入元素的性能得到进一步提升。
由此,在大多数情况下应该优先使用emplace_back来代替push_back。所有的标准库容器(array除外,因为它的长度不可改变,不能插入元素)都增加了类似的方法:emplace、emplace_hint、emplace_front、emplace_after、emplace_back等
这里我就以leetcode上的一道题作为例子来运用该方法:
bool operator >(const pair<int, int>& a, const pair<int, int>& b) { return a.first + a.second < b.first + b.second;}vector<pair<int, int>> kSmallestPairs(vector<int>& nums1, vector<int>& nums2, int k) { vector<pair<int, int>> v; if (nums1.empty() || nums2.empty()) { return v; } priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq; for (int i : nums1) for (int j : nums2) pq.emplace(i, j); int cnt = pq.size() < k ? pq.size() : k; while (cnt--) { v.emplace_back(pq.top()); pq.pop(); } return v;}
代码提交网址:https://leetcode.com/problems/find-k-pairs-with-smallest-sums/
0 0
- C++11中emplace的使用
- C++11容器中新增加的emplace相关函数的使用
- map的emplace方法
- C++11 emplace
- C++优化之使用emplace
- 容器的emplace成员函数
- C++11 emplace成员函数
- 【C/C++开发】容器set和multiset,C++11对vector成员函数的扩展(cbegin()、cend()、crbegin()、crend()、emplace()、data())
- STL deque的emplace方法(12)
- C++11 STL之emplace() 和 emplace_back()
- C++11新特性emplace操作
- C++11新特性emplace操作
- 【STL】C++11新特性emplace操作
- C++11新特性emplace操作
- 实战c++中的vector系列--C++11对vector成员函数的扩展(cbegin()、cend()、crbegin()、crend()、emplace()、data())
- C++/C++11中引用的使用
- C++/C++11中<numeric>的使用
- C++/C++11中<iterator>的使用
- STC Uart1,Uart2 关联 printf 函数
- Android下各个按键对应的key code
- oracle avg() 绝对平均值
- 第4周项目2-建立“单链表”算法库
- 欢迎使用CSDN-markdown编辑器
- C++11中emplace的使用
- AIDL 跨应用服务
- 关于LeetCode中Valid Parentheses一题的理解
- 音乐播放器项目总结
- Qt pro->vs工程和vs工程->pro
- 循环队列实现
- Win10新建360浏览器快捷菜单
- java api文档的阅读技巧
- 跨越opengl和d3d的鸿沟(二):现代opengl