最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++如何將一個vector內(nèi)容賦值給另一個vector,及swap與assign區(qū)別

 更新時間:2023年08月09日 11:07:26   作者:SunkingYang  
在本文中,我們將主要介紹5種將一個vector內(nèi)容賦值給另一個vector的方式,順便討論下swap與assign的區(qū)別,如有錯誤或未考慮完全的地方,望不吝賜教

賦值

方式一、申明時賦值

vector<int> v2;
v2.push_back(0);
v2.push_back(1);
vector<int> v1(v2); //聲明

方式二、使用assign賦值

vector<int> v2;
v2.push_back(0);
v2.push_back(1);
vector<int> v1; //聲明v1
v1.assign(v2.begin(), v2.end());//將v2賦值給v1

方式三、使用swap賦值

vector<int> v2;
v2.push_back(0);
v2.push_back(1);
vector<int> v1();
v1.swap(v2); //將v2賦值給v1

方式四、迭代器遍歷賦值

使用迭代器和循環(huán)語句賦值的方法,其方法運行效率較差:

vector<int> v2;
v2.push_back(0);
v2.push_back(1);
vector<int> v1;
vector<int>::iterator it;//聲明迭代器
for(it = v2.begin(); it!=v2.end(); ++it)//遍歷v2,賦值給v1
{
	v1.push_back(it);
}

方式五、直接用等號(=)賦值

vector<int> v2;
v2.push_back(0);
v2.push_back(1);
vector<int> v1;
v1 = v2;

但這種方式需要注意:

如果在參數(shù)賦值,請注意使用指針或者引用,否則導(dǎo)致賦值失敗,該內(nèi)容不屬于本文討論范圍

但舉個例:

//引用方式傳參
int testFun1(vector<int> &v1)
{
	vector<int> v2;
	v2.push_back(0);
	v2.push_back(1);
	v1 = v2;
}
//指針方式傳參
int testFun2(vector<int> *v1)
{
	vector<int> v2;
	v2.push_back(0);
	v2.push_back(1);
	v1 = &v2;
}
//全局或者局部變量方式
vector<int> v2;
int testFun2(vector<int> v1)
{
	v2.push_back(0);
	v2.push_back(1);
	v1 = v2;
}
int testFun2()
{
	//方式一
	vector<int> v1;
	testFun1(&v1);
	//方式二
	vector<int> *v2;
	testFun1(v2);
	//方式三
	vector<int> v3;
	testFun1(v3);
}

swap與assign的區(qū)別

我們此處主要討論它們兩的用作用和效率。

  • 作用

swap和assign都可以用在將一個vector的內(nèi)容全部復(fù)制給另外一個vector,

區(qū)別是swap會改變源vector,而assign會清空目的vector后再將源vector的值全部插入到目的vector中。

  • 效率

swap只是交換vector的頭指針,時間復(fù)雜度是常數(shù);

而assigin時間復(fù)雜度則是線性。

測試代碼

#include <vector>
#include "DebugUtility.h"
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
void print(int x)
{
    cout << x << endl;
}
void Swap(vector<string>& source, vector<string>& dest)
{
    DebugUtility temp;
    dest.swap(source);
}
void Assign(vector<string>& source, vector<string>& dest)
{
    DebugUtility temp; 
    dest.assign(source.begin(), source.end());
}
int main(int argc, const char *argv[])
{
    vector<string> source(900000, "90");
    vector<string> destination(1, "abc");
    Swap(source, destination);
    //source.clear();
    //for_each(destination.begin(), destination.end(), print);
    //Assign(source, destination);
    //source.clear();
    //for_each(destination.begin(), destination.end(), print);
    return 0;
}

測試結(jié)果

Total time elapsed : 1 us
900000

Total time elapsed : 12391 us
900000

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++中不能被重載的運算符介紹

    C++中不能被重載的運算符介紹

    其實在C/C++ 里大多數(shù)運算符都可以在C++中被重載的。C 的運算符中只有 . 和 ?:(以及 sizeof,技術(shù)上可以看作一個運算符)不可以被重載
    2013-10-10
  • C/C++ Qt 數(shù)據(jù)庫與Chart歷史數(shù)據(jù)展示

    C/C++ Qt 數(shù)據(jù)庫與Chart歷史數(shù)據(jù)展示

    這篇文章主要介紹了Qt利用Qchart組件展示數(shù)據(jù)庫中的歷史數(shù)據(jù)。文中的示例代碼講解清晰,具有一定的學(xué)習(xí)和工作價值,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-12-12
  • Matlab實現(xiàn)生成箭頭坐標(biāo)軸詳解

    Matlab實現(xiàn)生成箭頭坐標(biāo)軸詳解

    這篇文章主要介紹了如何利用Matlab實現(xiàn)生成箭頭坐標(biāo)軸,為坐標(biāo)軸增添箭頭,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Matlab有一定幫助,需要的可以參考一下
    2022-03-03
  • C語言時間轉(zhuǎn)換函數(shù)接口的用法全面講解

    C語言時間轉(zhuǎn)換函數(shù)接口的用法全面講解

    這篇文章主要介紹了C語言中時間處理的常用類型和函數(shù),包括time_t、structtm等,以及time()、localtime()、gmtime()、mktime()、asctime()、ctime()和strftime()等,通過一個示例程序,展示了如何獲取當(dāng)前時間、轉(zhuǎn)換時間格式、計算時間差和進(jìn)行時間操作
    2026-01-01
  • C++基礎(chǔ)之this指針與另一種“多態(tài)”

    C++基礎(chǔ)之this指針與另一種“多態(tài)”

    this指針識別了同一個類的不同的對象,換句話說,this指針使得成員函數(shù)可以訪問同一個類的不同對象。再深入一點,this指針使得成員函數(shù)會因為this指針的不同而訪問到了不同的成員變量
    2013-07-07
  • C++精要分析decltype的作用及用法

    C++精要分析decltype的作用及用法

    decltype是C++11新增的一個關(guān)鍵字,和auto的功能一樣,用來在編譯時期進(jìn)行自動類型推導(dǎo)。引入decltype是因為auto并不適用于所有的自動類型推導(dǎo)場景,在某些特殊情況下auto用起來很不方便,甚至壓根無法使用
    2022-05-05
  • 淺談C語言數(shù)組元素下標(biāo)為何從0開始

    淺談C語言數(shù)組元素下標(biāo)為何從0開始

    很多同學(xué)可能在學(xué)習(xí)數(shù)組時會有這個疑問,下標(biāo)為什么不從1開始呢?本文主要介紹了淺談C語言數(shù)組元素下標(biāo)為何從0開始,感興趣的可以了解一下
    2022-01-01
  • C語言的變量類型及內(nèi)存大小詳解

    C語言的變量類型及內(nèi)存大小詳解

    這篇文章主要介紹了CC和C++變量類型及內(nèi)存大小,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-09-09
  • C語言運用函數(shù)指針數(shù)組實現(xiàn)計算器功能

    C語言運用函數(shù)指針數(shù)組實現(xiàn)計算器功能

    這篇文章主要為大家詳細(xì)介紹了C語言運用函數(shù)指針數(shù)組實現(xiàn)計算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C語言數(shù)據(jù)結(jié)構(gòu)與算法之圖的遍歷(一)

    C語言數(shù)據(jù)結(jié)構(gòu)與算法之圖的遍歷(一)

    這篇文章主要是介紹了利用深度優(yōu)先算法實現(xiàn)圖的遍歷,文中利用圖文詳細(xì)的介紹了實現(xiàn)步驟,對我們學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法有一定的幫助,需要的朋友可以參考一下
    2021-12-12

最新評論

阿合奇县| 陆良县| 长武县| 湘潭市| 新安县| 巴东县| 荔浦县| 芮城县| 博乐市| 彭州市| 和顺县| 织金县| 葵青区| 巫山县| 双辽市| 宁国市| 墨江| 建瓯市| 兴海县| 桂林市| 文水县| 固阳县| 大厂| 旬邑县| 松溪县| 大名县| 林西县| 中阳县| 河津市| 桓台县| 凌海市| 鹤壁市| 娄烦县| 乌兰察布市| 石泉县| 绩溪县| 日喀则市| 曲松县| 泸溪县| 晋中市| 东兰县|