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

C++入門筆記之std::vector容器詳解

 更新時(shí)間:2021年07月06日 11:16:39   作者:Code_DZhangTeng  
這篇文章主要給大家介紹了關(guān)于C++之std::vector容器的相關(guān)資料,vector,一種隨機(jī)訪問的數(shù)組類型,它提供了對數(shù)組元素的快速、隨機(jī)訪問,以及在序列尾部快速、隨機(jī)的插入和刪除操作,需要的朋友可以參考下

前言

vector實(shí)質(zhì)是C++的一個(gè)類,與數(shù)組很相似,但是vector的優(yōu)勢是可以動(dòng)態(tài)擴(kuò)展,不需要考慮其內(nèi)存大小。

定義:

向量(Vector)是一個(gè)封裝了動(dòng)態(tài)大小數(shù)組的順序容器(Sequence Container)。跟任意其它類型容器一樣,它能夠存放各種類型的對象??梢院唵蔚恼J(rèn)為,向量是一個(gè)能夠存放任意類型的動(dòng)態(tài)數(shù)組。

特性:

1.順序序列

順序容器中的元素按照嚴(yán)格的線性順序排序??梢酝ㄟ^元素在序列中的位置訪問對應(yīng)的元素。

2.動(dòng)態(tài)數(shù)組

支持對序列中的任意元素進(jìn)行快速直接訪問,甚至可以通過指針?biāo)闶鲞M(jìn)行該操作。操供了在序列末尾相對快速地添加/刪

除元素的操作。

3.能夠感知內(nèi)存分配器的(Allocator-aware)

容器使用一個(gè)內(nèi)存分配器對象來動(dòng)態(tài)地處理它的存儲(chǔ)需求。

1. vector的構(gòu)造函數(shù)原型:

    vector<T> data; //使用模板類,默認(rèn)構(gòu)造函數(shù)

    vector(data.begin(),data.end()); //將data的【begin(),end())區(qū)間中的元素拷貝給本身,注意是數(shù)學(xué)中的前閉后開 區(qū)間

    vector(n,elem); //將n個(gè)elem元素拷貝給本身

    vector(const vector &data); //拷貝構(gòu)造

#include <iostream>
#include <vector>
 
using namespace std;
 
void fun_print_vector(std::vector<int>&data)
{
    //std::vector<int>::iterator it; //可以用auto代替。
    for(auto it_data = data.begin();it_data != data.end();it_data++){
        std::cout << *it_data << " " << std::endl;
    }
}
void fun_vector()
{
    vector<int> data1; //默認(rèn)構(gòu)造
    data1.push_back(1);
    data1.push_back(2);
    data1.push_back(3);
    fun_print_vector(data1); //打?。? 2 3 
 
    vector<int> data2(data1.begin(),data1.end()); //通過區(qū)間進(jìn)行構(gòu)造
    fun_print_vector(data2); //打印:1 2 3 
 
    vector<int> data3(4,1);//4個(gè)1構(gòu)造
    fun_print_vector(data3); //打?。? 1 1 1 
 
    vector<int> data4(data3); //拷貝構(gòu)造
    fun_print_vector(data4); //打印:1 1 1 1 
 
}

2. vector的賦值函數(shù)原型:

vector& operator=(cost vector &data); //重載操作符

vector& assign(beg,end); //將[ beg,ed )區(qū)間中的數(shù)據(jù)拷貝賦值給本身

vector& assign(n,elem); //將n個(gè)elem拷貝賦值給本身

#include <iostream>
#include <vector>
 
using namespace std;
 
void fun_print_vector(std::vector<int>&data)
{
    //std::vector<int>::iterator it; //可以用auto代替。
    for(auto it_data = data.begin();it_data != data.end();it_data++){
        std::cout << *it_data << " " << std::endl;
    }
}
void fun_vector()
{
    vector<int> data1;
    for(int i = 0;i < 6;i++){
        data1.push_back(i);
    }
    fun_print_vector(data1); //打印 0 1 2 3 4 5
 
    vector<int> data2;
    data2 = data1;
    fun_print_vector(data2); //打印 0 1 2 3 4 5
 
    vector<int> data3;
    data3.assign(data1.begin(),data1.end());
    fun_print_vector(data3); //打印 0 1 2 3 4 5
 
    vector<int> data4;
    data3.assign(3,6);
    fun_print_vector(data4); //打印 6 6 6
}

3. vector的容量和大小函數(shù)原型:

empty(); //判斷容器是否為空

capacity(); //容器的容量    capacity一定會(huì)大于等于size

size(); //返回容器中元素的個(gè)數(shù)

resize(int num); //重新指定容器的長度為num,若容器變長,則以默認(rèn)值填充新的位置;若容器變短,則末尾超出的元素被刪除

resize(int num,elem); //重新指定容器的長度為num,若容器變長,則以elem數(shù)值填充新的位置;若容器變短,則末尾超出的元素被刪除

#include <iostream>
#include <vector>
 
using namespace std;
 
void fun_print_vector(std::vector<int>&data)
{
    //std::vector<int>::iterator it; //可以用auto代替。
    for(auto it_data = data.begin();it_data != data.end();it_data++){
        std::cout << *it_data << " " << std::endl;
    }
}
void fun_vector()
{
    vector<int> data1;
    for(int i = 0;i < 6;i++){
        data1.push_back(i);
    }
    fun_print_vector(data1); //打印 0 1 2 3 4 5
 
    if(data1.empty() == true){
        std::cout << "該容器是空" << std::endl;
    }else{
        std::cout << "該容器不是空" << std::endl;
        std::cout << "data1.capacity:" << data1.capacity() << std::endl;
        std::cout << "data1.size:" << data1.size() << std::endl;
    }
    data1.resize(10); //填充默認(rèn)值0
    fun_print_vector(data1); //打印 0 1 2 3 4 5 0 0 0 0
    data1.resize(13,8); //填充數(shù)值8
    fun_print_vector(data1); //打印 0 1 2 3 4 5 0 0 0 0 8 8 8
    data1.resize(4);
    fun_print_vector(data1); //打印 0 1 2 3
}

4. vector的插入和刪除函數(shù)原型:

push_back(elem); //尾部插入元素elem

pop_back(); //刪除最后一個(gè)元素

insert(const_iterator pos, elem); //迭代器指向位置pos插入元素elem

insert(const_iterator pos, int count,elem); //迭代器指向位置pos插入count個(gè)元素elem

erase(const_iterator pos); //刪除迭代器指向的元素

erase(const_iterator start,const_iterator end); //刪除迭代器start到end之間的元素

clear(); //刪除容器中所有元素

#include <iostream>
#include <vector>
 
using namespace std;
 
void fun_print_vector(std::vector<int>&data)
{
    //std::vector<int>::iterator it; //可以用auto代替。
    for(auto it_data = data.begin();it_data != data.end();it_data++){
        std::cout << *it_data << " " << std::endl;
    }
}
void fun_vector()
{
    vector<int> data1;
    for(int i = 0;i < 6;i++){
        data1.push_back(i);
    }
    fun_print_vector(data1); //打印 0 1 2 3 4 5
    data1.pop_back(); //尾刪
    fun_print_vector(data1); //打印 0 1 2 3 4
    data1.insert(data1.begin(),22); //迭代器位置插入一個(gè)22
    fun_print_vector(data1); //打印 22 0 1 2 3 4
    data1.insert(data1.begin(),3,7); //迭代器位置插入三個(gè)22
    fun_print_vector(data1); //打印 7 7 7 22 0 1 2 3 4
 
    data1.erase(data1.begin()); //迭代器位置刪除
    fun_print_vector(data1); //打印 7 7 22 0 1 2 3 4
    data1.erase(data1.begin(),data1.end()); //迭代器位置 區(qū)間 刪除
    fun_print_vector(data1); //打印 空
 
    data1.clear(); //清空容器
    fun_print_vector(data1); //打印 空
 
}

5. vector的存取操作函數(shù)原型:

at(int idx); //返回索引idx所指的數(shù)據(jù)

operator []; //返回索引idx所指的數(shù)據(jù)

front(); //返回容器的第一個(gè)數(shù)據(jù)元素

back(); //返回容器的最后一個(gè)數(shù)據(jù)元素

#include <iostream>
#include <vector>
 
using namespace std;
 
void fun_print_vector(std::vector<int>&data)
{
    //std::vector<int>::iterator it; //可以用auto代替。
    for(auto it_data = data.begin();it_data != data.end();it_data++){
        std::cout << *it_data << " " << std::endl;
    }
}
void fun_vector()
{
    vector<int> data1;
    for(int i = 0;i < 6;i++){
        data1.push_back(i);
    }
 
    //利用[]方式訪問vector中的元素
    for(int j = 0;j<data1.size();j++){
        std::cout << data1[j] << " " << std::endl;
    }
    //利用at方式訪問vector中的元素
    for(int j = 0;j<data1.size();j++){
        std::cout << data1.at(j) << " " << std::endl;
    }
 
    std::cout << "第一個(gè)元素是:" << data1.front() << std::endl;
    std::cout << "最后一個(gè)元素是:" << data1.back() << std::endl;
 
}

6. vector的呼喚容器函數(shù)原型:

swap(vec); //將vecy與本身 兩個(gè)容器中的元素互換

#include <iostream>
#include <vector>
 
using namespace std;
 
void fun_print_vector(std::vector<int>&data)
{
    //std::vector<int>::iterator it; //可以用auto代替。
    for(auto it_data = data.begin();it_data != data.end();it_data++){
        std::cout << *it_data << " " << std::endl;
    }
}
void fun_vector()
{
    vector<int> data1;
    for(int i = 0;i < 6;i++){
        data1.push_back(i);
    }
    fun_print_vector(data1); //打印 0 1 2 3 4 5
 
    vector<int> data2;
    for(int i = 6;i > 0;i++){
        data2.push_back(i);
    }
    fun_print_vector(data2); //打印 6 5 4 3 2 1 
 
    data1.swap(data2);
    fun_print_vector(data1); //打印 6 5 4 3 2 1 
    fun_print_vector(data2); //打印 0 1 2 3 4 5 
 
}

總結(jié)

到此這篇關(guān)于C++入門筆記之std::vector容器的文章就介紹到這了,更多相關(guān)C++ std::vector容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一篇文章帶你了解C語言二分查找的簡單應(yīng)用

    一篇文章帶你了解C語言二分查找的簡單應(yīng)用

    這篇文章主要介紹了二分查找算法在C語言程序中的使用示例,文中最后提到了使用二分查找法一個(gè)需要注意的地方,需要的朋友可以參考下
    2021-08-08
  • C++入門基礎(chǔ)之命名空間、輸入輸出和缺省參數(shù)

    C++入門基礎(chǔ)之命名空間、輸入輸出和缺省參數(shù)

    C++入門基礎(chǔ)篇的內(nèi)容為C++的基本特性,只有在掌握C++的基本特性后,是進(jìn)入后面類和對象學(xué)習(xí)的基礎(chǔ),下面這篇文章主要給大家介紹了關(guān)于C++入門基礎(chǔ)之命名空間、輸入輸出和缺省參數(shù)的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 淺談C++20新增內(nèi)容

    淺談C++20新增內(nèi)容

    C++20 是 C++ 語言的一次重大更新,它引入了許多新特性,本文主要介紹了淺談C++20新增內(nèi)容,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • C語言全面講解順序表使用操作

    C語言全面講解順序表使用操作

    線性表是最簡單的數(shù)據(jù)結(jié)構(gòu),而順序表又是最簡單的線性表,其基本思想是用一段地址連續(xù)的儲(chǔ)存單元依次存儲(chǔ)線性表的數(shù)據(jù)元素,比如我們常用的一維數(shù)組,下面代碼實(shí)現(xiàn)了順序表的定義以及基本操作
    2022-04-04
  • C語言 二叉樹的鏈?zhǔn)酱鎯?chǔ)實(shí)例

    C語言 二叉樹的鏈?zhǔn)酱鎯?chǔ)實(shí)例

    本篇文章主要介紹C語言中二叉樹的鏈?zhǔn)酱鎯?chǔ),這里提供了一個(gè)實(shí)例代碼進(jìn)行參考,這樣對二叉樹的鏈?zhǔn)酱鎯?chǔ)有更深入的了解,希望能幫到學(xué)習(xí)這塊知識的同學(xué)
    2016-07-07
  • 一張圖總結(jié)C++中關(guān)于指針的那些事

    一張圖總結(jié)C++中關(guān)于指針的那些事

    今天小編就為大家分享一篇關(guān)于一圖總結(jié)C++中關(guān)于指針的那些事,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • C++中string類的常用方法實(shí)例總結(jié)

    C++中string類的常用方法實(shí)例總結(jié)

    string類是C++提供的抽象數(shù)據(jù)類型,其支持可變長字符串,下面這篇文章主要給大家總結(jié)介紹了關(guān)于C++中string類的常用方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • C/C++?Qt?數(shù)據(jù)庫與ComBox實(shí)現(xiàn)多級聯(lián)動(dòng)示例代碼

    C/C++?Qt?數(shù)據(jù)庫與ComBox實(shí)現(xiàn)多級聯(lián)動(dòng)示例代碼

    Qt中的SQL數(shù)據(jù)庫組件可以與ComBox組件形成多級聯(lián)動(dòng)效果,在日常開發(fā)中多級聯(lián)動(dòng)效果應(yīng)用非常廣泛,今天給大家分享二級ComBox菜單如何與數(shù)據(jù)庫形成聯(lián)動(dòng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-12-12
  • C語言字母轉(zhuǎn)換大小寫的3種方法圖文詳解

    C語言字母轉(zhuǎn)換大小寫的3種方法圖文詳解

    我們在C語言入門的時(shí)候都會(huì)遇到要求寫大小寫轉(zhuǎn)換的題目,所以下面這篇文章主要給大家介紹了關(guān)于C語言字母轉(zhuǎn)換大小寫的3種方法,文中給了詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-10-10
  • C語言安全編碼之?dāng)?shù)值中的sizeof操作符

    C語言安全編碼之?dāng)?shù)值中的sizeof操作符

    這篇文章主要介紹了C語言安全編碼的數(shù)值中的sizeof操作符用法注意事項(xiàng),需要的朋友可以參考下
    2014-07-07

最新評論

新乡市| 九江市| 瑞安市| 洛浦县| 大石桥市| 利辛县| 德昌县| 类乌齐县| 南江县| 酉阳| 上虞市| 旺苍县| 吉木萨尔县| 尼木县| 玉龙| 习水县| 镇康县| 庄浪县| 宜兰县| 临西县| 城口县| 台中县| 泉州市| 璧山县| 平和县| 平武县| 峨边| 尼玛县| 嘉峪关市| 延寿县| 天门市| 田东县| 呈贡县| 松溪县| 贡嘎县| 和平区| 桂平市| 英超| 海丰县| 商丘市| 遂平县|