亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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)文章

  • Qt?事件處理機(jī)制的深入理解

    Qt?事件處理機(jī)制的深入理解

    本文主要介紹了Qt?事件處理機(jī)制的深入理解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • C++中的動(dòng)態(tài)規(guī)劃子序列問題分析探討

    C++中的動(dòng)態(tài)規(guī)劃子序列問題分析探討

    可能有些讀者有接觸過動(dòng)態(tài)規(guī)劃,可能也有一些讀者以前完全不知道動(dòng)態(tài)規(guī)劃這個(gè)東西,別擔(dān)心,我這篇文章會(huì)為讀者做一個(gè)入門,好讓讀者掌握這個(gè)重要的知識(shí)點(diǎn)
    2023-03-03
  • C++實(shí)現(xiàn)產(chǎn)生隨機(jī)數(shù)和相應(yīng)的猜拳小游戲?qū)嵗a

    C++實(shí)現(xiàn)產(chǎn)生隨機(jī)數(shù)和相應(yīng)的猜拳小游戲?qū)嵗a

    C++中沒有自帶的random函數(shù),要實(shí)現(xiàn)隨機(jī)數(shù)的生成就需要使用rand()和srand()。下面這篇文章主要給大家介紹了關(guān)于C++實(shí)現(xiàn)產(chǎn)生隨機(jī)數(shù)和相應(yīng)的猜拳小游戲的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • 詳解C++ 運(yùn)算符重載中返回值的坑

    詳解C++ 運(yùn)算符重載中返回值的坑

    這篇文章主要介紹了C++ 運(yùn)算符重載中返回值的坑,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 安裝OpenMPI來配合C語言程序進(jìn)行并行計(jì)算

    安裝OpenMPI來配合C語言程序進(jìn)行并行計(jì)算

    這篇文章主要介紹了安裝OpenMPI來配合C語言程序進(jìn)行并行計(jì)算的例子,MPI的全稱是Message Passing Interface即標(biāo)準(zhǔn)消息傳遞界面,可以用于并行計(jì)算,需要的朋友可以參考下
    2015-11-11
  • 淺談C++中virtual的三種用法

    淺談C++中virtual的三種用法

    這篇文章主要介紹了淺談C++中virtual的三種用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C++中可正確獲取UTF-8字符長(zhǎng)度的函數(shù)分享

    C++中可正確獲取UTF-8字符長(zhǎng)度的函數(shù)分享

    這篇文章主要介紹了C++中可正確獲取UTF-8字符長(zhǎng)度的函數(shù)分享,需要的朋友可以參考下
    2014-08-08
  • C語言算法練習(xí)之佩奇存錢方案

    C語言算法練習(xí)之佩奇存錢方案

    這篇文章主要該大家分享C語言算法佩奇存錢的練習(xí),文章主要通過描述佩奇存錢的問題然后確定程序框架將結(jié)果運(yùn)算出來,下面來看詳細(xì)內(nèi)容吧,需要的朋友可以參考一下
    2022-04-04
  • C語言面試C++字符串替換空格示例

    C語言面試C++字符串替換空格示例

    這篇文章主要介紹了C語言面試中C++字符串替換空格示例,文中給出了基本上可以拿下offer的代碼,有需要的朋友可以借鑒參考下,希望大家都能早日拿到心儀的offer
    2021-09-09
  • C++11、C++14、C++17、C++20常用新特性

    C++11、C++14、C++17、C++20常用新特性

    本文主要介紹了C++11、C++14、C++17、C++20常用新特性,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評(píng)論