C++容器之emplace_back和push_back
2017-01-18 16:40
344 查看
代码:
上面代码中,
#include "stdafx.h" #include <iostream> #include <vector> using namespace std; class Bullet { public: Bullet() {} Bullet(string s) { str = s; } private: string str; }; int main() { vector<Bullet> v; v.clear(); v.push_back("123"); v.emplace_back("123"); v.emplace_back(Bullet("123")); return 0; }
上面代码中,
v.push_back("123")会报错,原因是”123”是字符串类型,而v的成员应该是Bullet类型。但是如果用emplace_back的两条语句都没有问题,所以,如果传入参数与容器类型不匹配时,emplace_back会默认先调用一次默认构造函数,而push_back并不会执行这一步操作。
相关文章推荐
- C++之emplace_back() VS push_back()
- C++ - "emplace_back" 和 "push_back" 的区别
- c++ 11中emplace_back替代push_back的相关知识点,含右值引用,move用法等
- 实战c++中的vector系列--知道emplace_back为何优于push_back吗?
- C++ - "emplace_back" 和 "push_back" 的区别
- 实战c++中的vector系列--知道emplace_back为何优于push_back吗?
- 实战c++中的vector系列--知道emplace_back为何优于push_back吗?
- 【C/C++开发】emplace_back() 和 push_back 的区别
- C++ 顺序容器的操作(2)push_back、push_front、insert
- C++ 中"emplace_back" 与 "push_back" 的区别
- STL中容器的push()或者push_back()函数的一点说明
- C++ vector 和push_back 详解
- C++基础---string类的operator+=/append/push_back
- 实战c++中的string系列--string的连接(+= or append or push_back)
- 实战c++中的string系列--string的连接(+= or append or push_back)
- C++STL中vector容器 begin()与end()函数、front()与back()的用法
- c++ vector push_back 出错或者错误
- C++ 顺序容器的操作(6) 删除元素 erase、clear、pop_back、pop_front
- 实战c++中的vector系列--assign() push_back() or insert()
- STL中vector容器begin(),end(),push_back()等相关函数