C++11新特性emplace操作
来源:互联网 发布:阿里云客服累吗 编辑:程序博客网 时间:2024/06/08 10:18
emplace操作是C++11新特性,新引入的的三个成员emplace_front、emplace 和 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++11新特性emplace操作
- C++11新特性emplace操作
- 【STL】C++11新特性emplace操作
- C++11新特性emplace操作
- C+11 新特性
- c++ emplace操作
- [C++]C++11新特性
- 【C++】 C++11新特性
- C++11 emplace
- 【C++】了解C++11新特性
- C++:C++11新特性详解(1)
- 12c新特性
- Objective-C新特性
- Objective-C新特性
- Objective-C新特性
- Objective-C新特性
- 12C新特性
- C#7.0新特性
- 01:最长上升子序列
- 正则表达式前端使用手册
- Spring中的一些面试题
- node中的异步编程思想
- VIM的字符串替换命令及VIM的配置
- C++11新特性emplace操作
- 283. Move Zeroes
- POJ 2125 Destroying The Graph
- 有一个已经排序号的数组。现在输入一个数,要求按原来的规律将它插入数组中。
- 学生排队
- java 的线程的生命周期
- PAT-天梯赛习题集-L3-013-非常弹的球
- 【C】getchar()在C程序中的妙用!
- 167. Two Sum II