概述
参考网址:https://www.csdn.net/tags/NtzaMg5sMDIwMzAtYmxvZwO0O0OO0O0O.html
class Person
{
public:
Person(int a, int b) :m_a(a), m_b(b)
{
cout << "constructor" << endl;
}
int m_a = 1;
int m_b = 2;
};
int main()
{
vector<Person> v;
v.push_back({ 3,4 }); //{}构造
v.emplace_back(3, 4); //不需要{},就可以构造
v.emplace_back(Person{ 3,4 }); //或者明确使用Person{3,4}
v.emplace_back(Person(3, 4)); //或者明确使用Person(3,4)
return 0;
}
emplace_back的本质还是加入一个对象,只是如果有多个参数,则调用的是多参数的构造函数,然后在末尾加入一个对象。
pop_back:
从末尾删除一个元素
#include<climits>
int main()
{
unique_ptr<int[]> up1(new int[3]);
up1[0] = 10;
up1[1] = 20;
up1[2] = 30;
unique_ptr<int[]> up2(new int[3]);
up2[0] = 1;
up2[1] = 2;
up2[2] = 3;
vector<unique_ptr<int[]>> _sparse;
//_sparse[0] = up1; //error
//_sparse[0] = std::move(up1); //error
//_sparse.push_back(up1); //error
//_sparse.push_back(std::move(up1)); //right
//_sparse.emplace_back(up1); //error
_sparse.emplace_back(std::move(up2)); //right
_sparse.emplace_back(std::move(up1)); //right
_sparse.pop_back();
int x =_sparse[0][1];
return 0;
}
最后
以上就是务实蓝天为你收集整理的C++中emplace_back和push_back的使用的全部内容,希望文章能够帮你解决C++中emplace_back和push_back的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复