如下代码解释:
// vector::emplace,emplace_back
#include <iostream>
#include <vector>
using namespace std;
class text{
private:
string str;
public:
text(string s):str(s){}
void show()const{
cout<<str<<endl;
}
};
//emplace的用法 iterator emplace (const_iterator position, Args&&... args);
//在position位置插入一个元素,非常得注意,这个position是一个迭代器,并不是整型int
//在position位置插入一个元素后,原position后的元素都要一次后移一个位置
//返回指向新插入元素的迭代器
int main ()
{
vector<int> res = {10,20,30};
//int(错误,不能用int) it = res.emplace ( res.begin()+1, 100 );
//emplace返回指向新插入元素的迭代器
auto it = res.emplace ( res.begin()+1, 100 );
res.emplace ( it, 200 );
res.emplace ( res.end(), 300 );
cout << "myvector contains:";
//或者用for (auto& x: res)
//或者用for (auto x: res)
for (int x: res)
cout << ' ' << x;
cout << '\n';
//-------------------------------------------------------------
//-------------------------------------------------------------
//emplace_back的用法
//emplace_back和push_back的功能一样,但用emplace_back更好
vector<text> vi;
vi.emplace_back("Leo");
vi.front().show();
vi.emplace_back("Love");
//这条push_back代码会报错没想到吧,为什么报错呢?
//不用深究,是它背后的机制造成的
//vi.push_back("Love");
vi.back().show();
return 0;
}
输出:
myvector contains: 10 200 100 20 30 300
Leo
Love
版权声明:本文为m0_52711790原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。