如下代码解释:
// 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 版权协议,转载请附上原文出处链接和本声明。
