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

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

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

賦值

方式一、申明時(shí)賦值

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)語句賦值的方法,其方法運(yù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);
}

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

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

但這種方式需要注意:

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

但舉個(gè)例:

//引用方式傳參
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都可以用在將一個(gè)vector的內(nèi)容全部復(fù)制給另外一個(gè)vector,

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

  • 效率

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

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

測(cè)試代碼

#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;
}

測(cè)試結(jié)果

Total time elapsed : 1 us
900000

Total time elapsed : 12391 us
900000

總結(jié)

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

相關(guān)文章

  • C++中不能被重載的運(yùn)算符介紹

    C++中不能被重載的運(yùn)算符介紹

    其實(shí)在C/C++ 里大多數(shù)運(yùn)算符都可以在C++中被重載的。C 的運(yùn)算符中只有 . 和 ?:(以及 sizeof,技術(shù)上可以看作一個(gè)運(yùn)算符)不可以被重載
    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í)和工作價(jià)值,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-12-12
  • Matlab實(shí)現(xiàn)生成箭頭坐標(biāo)軸詳解

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

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

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

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

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

    this指針識(shí)別了同一個(gè)類的不同的對(duì)象,換句話說,this指針使得成員函數(shù)可以訪問同一個(gè)類的不同對(duì)象。再深入一點(diǎn),this指針使得成員函數(shù)會(huì)因?yàn)閠his指針的不同而訪問到了不同的成員變量
    2013-07-07
  • C++精要分析decltype的作用及用法

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

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

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

    很多同學(xué)可能在學(xué)習(xí)數(shù)組時(shí)會(huì)有這個(gè)疑問,下標(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ǔ)知識(shí),需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-09-09
  • C語言運(yùn)用函數(shù)指針數(shù)組實(shí)現(xiàn)計(jì)算器功能

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

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

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

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

最新評(píng)論

双城市| 仁寿县| 望奎县| 山丹县| 铜梁县| 河东区| 山东省| 耒阳市| 平远县| 如东县| 峨边| 浮山县| 普宁市| 都兰县| 沈阳市| 阜城县| 潍坊市| 德钦县| 禄劝| 巴东县| 桃园市| 京山县| 遂昌县| 土默特左旗| 格尔木市| 巴中市| 嵩明县| 咸阳市| 疏附县| 安龙县| 金秀| 霍邱县| 都安| 隆尧县| 贵德县| 诸暨市| 松滋市| 溧水县| 栾川县| 酉阳| 岑溪市|