日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

emplace与insert

發(fā)布時間:2024/4/18 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 emplace与insert 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

c++中容器定義了很多操作。其中有6種操作:
emplace_front,emplace,emplace_back;
push_front,insert,push_back
都可以向容器中添加元素,但是其中又有很大的區(qū)別。下面有一程序:

#include<iostream> #include<vector> #include<string> using namespace std;class Dog { public:string name;int age; public:Dog(string n, int a) :name(n), age(a){ };Dog(string n) :name(n), age(0){ cout << "調(diào)用了構造函數(shù)" << endl; };Dog() = default; };int main() {vector<Dog> q;q.push_back("2ha");for (auto a : q){cout << a.name << ' ' << a.age << endl;}getchar(); }


為了方便查看結果,我將所有成員都設置成了公共的。
VS2013編譯時會在q.push_back(“2ha”); 報錯
我將程序中的q.push_back(“2ha”);改成了q.emplace_back(“2ha”);
程序編譯通過。運行結果是

這說明emplace是調(diào)用構造函數(shù),直接在容器中構造一個元素。
而insert,push是拷貝操作,將元素拷貝到容器中。


?

總結

以上是生活随笔為你收集整理的emplace与insert的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。