c++ emplace操作
来源:互联网 发布:网络大电影如何挣钱 编辑:程序博客网 时间:2024/05/21 19:48
emplace操作是C++11新特性,新引入的的三个成员emlace_front、empace 和 emplace_back,这些操作构造而不是拷贝元素到容器中,这些操作分别对应push_front、insert 和push_back,允许我们将元素放在容器头部、一个指定的位置和容器尾部。
两者的区别
当调用insert时,我们将元素类型的对象传递给insert,元素的对象被拷贝到容器中,而当我们使用emplace时,我们将参数传递元素类型的构造函,emplace使用这些参数在容器管理的内存空间中直接构造元素。
例子
假定d是一个Date类型的容器。
//使用三个参数的Date构造函数,在容器管理的内存空间中构造新元素。
d.emplace_back(“2016”,”05”,”26”);
//错误,push_back没有这种用法
d.push_back(“2016”,”05”,”26”);
//push_back()创建一个临时对象,然后将临时对象拷贝到容器中
d.push_back(Date(“2016”,”05”,”26”));
通过例子发现,使用C++11新特性emplace向容器中添加新元素,在容器管理的内存空间中构造新元素,与insert相比,省去了构造临时对象,减少了内存开销。
Note
emplace函数在容器中直接构造元素,传递给emplace函数的参数必须与元素类型的构造函数相匹配。
0 0
- c++ emplace操作
- C++11新特性emplace操作
- C++11新特性emplace操作
- 【STL】C++11新特性emplace操作
- C++11新特性emplace操作
- emplace 和 emplace_back
- map的emplace方法
- emplace与insert
- C++11 emplace
- 容器的emplace成员函数
- C++11 emplace成员函数
- C++优化之使用emplace
- 【C/C++开发】容器set和multiset,C++11对vector成员函数的扩展(cbegin()、cend()、crbegin()、crend()、emplace()、data())
- STL vector中的emplace方法(23)
- STL deque的emplace方法(12)
- C++11 STL之emplace() 和 emplace_back()
- C++11中emplace的使用
- C++/C移位操作
- 结构型之装饰模式
- 微信公众号用java中控服务器-实现用户网页授权和获取使用JS-SDK权限
- 19-marquee跑马灯标签
- 伙伴算法
- 关于乱码的解决方案
- c++ emplace操作
- 第一个Java程序Test.java开发、编译、解释和总结
- 20-b,u,i,s,这些被删除的标签以及用来替换他们的标签
- CSS学习笔记
- Android实现控件滑动的几种方法
- ffmpeg和SDL的配置
- L1-001. Hello World
- 21-字符实体
- Windows平台下Qt4与Qt5检测USB设备插拔