欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++?基礎(chǔ)函數(shù)的介紹及使用(Vector+deque+STL)

 更新時(shí)間:2022年06月28日 14:19:58   作者:還是要努力呀!  
這篇文章主要介紹了C++?基礎(chǔ)函數(shù)的介紹及使用(Vector+deque+STL),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

一、Vector的基礎(chǔ)函數(shù)

之前有學(xué)習(xí)過 vector、set、map等容器,都是需要什么搜什么,沒有詳細(xì)的了解其中的內(nèi)容。最近在看 STL 的相關(guān)內(nèi)容,就順手整理一些基礎(chǔ)性內(nèi)容,避免以后遇到的時(shí)候再臨時(shí)抱佛腳。

1. 構(gòu)造函數(shù)

vector<T> v; ? ? //創(chuàng)建一個(gè)空的vector
vector<T> v(int nSize, const t& t); ? ? //創(chuàng)建一個(gè)vector,元素個(gè)數(shù)為nSize,元素值均為t
vector<T> v(int nSize); ? ? //創(chuàng)建一個(gè)vector,元素個(gè)數(shù)為nSize
vector<T> v(const vector&); ? ? //復(fù)制構(gòu)造函數(shù)
vector<T> v = vector(begin,end); ? ? //復(fù)制[begin,end]范圍內(nèi)另一個(gè)數(shù)組的元素到 v中

2. 增加元素

v.push_back(const T& x); ? ? //在vector尾部增加一個(gè)元素x
v.insert(iterator it, const T& x); ? ? //在vector中迭代器指向的元素前插入一個(gè)元素x
v.insert(iterator it, int n,const T& x); ? ? //在vector中迭代器指向的元素前插入n個(gè)相同的元素x
v.insert(iterator it,const_iterator first,const_iterator last); ? ? //在vector中迭代器指向的元素前插入另一個(gè)相同類型vector中[first,last]間的元素

3. 刪除元素

v.erase(iterator it); ? ? //刪除vector中迭代器指向的元素
v.erase(iterator first, iterator last); ? ? //刪除vector中[first,last)的元素
v.pop_back(); ? ? //刪除vector中的最后一個(gè)元素
v.clear(); ? ? //清空向量中的所有元素

4. 遍歷vector

v.at(int nPos); ? ? //返回nPos位置元素
v.front(); ? ? //返回vector的首元素
v.back(); ? ? //返回vector的尾元素
v.begin(); ? ? //返回指向第一個(gè)元素的迭代器
v.end(); ? ? //返回指向最后一個(gè)元素下一位置的迭代器
v.rbegin(); ? ? //反向迭代器,指向最后一個(gè)元素
v.rend(); ? ? //反向迭代器,指向第一個(gè)元素的前一個(gè)位置

5. 判斷函數(shù)

v.empty(); ? ? //判斷vector是否為空

6. 大小函數(shù)

v.size(); ? ? //返回vector中元素個(gè)數(shù)
v.capacity(); ? ? //返回當(dāng)前vector中所能容納的最大元素個(gè)數(shù)
v.max_size(); ? ? //返回當(dāng)前vector最大可允許的元素?cái)?shù)量個(gè)數(shù)

7. 其他函數(shù)

v.swap(vector& v2); ? ? //交換兩個(gè)同類型的vector
v.assign(int n,const T& t); ? ? //設(shè)置vector中第n個(gè)元素的值為t
v.assign(const_iterator first,const_iterator last); ? ? //vector中[first,last)中的元素設(shè)置成當(dāng)前vector元素

二、deque的介紹及使用

deque(double ended queue) 作為雙端隊(duì)列,不論在尾部或頭部插入元素,都十分便捷。而在中間插入元素會(huì)比較費(fèi)時(shí),因?yàn)楸仨氁苿?dòng)中間其他的元素。

雙端隊(duì)列是一種隨機(jī)訪問的數(shù)據(jù)類型,提供了在序列兩端快速插入和刪除的功能,它可以在需要的時(shí)候改變自身大小,完成了標(biāo)準(zhǔn) C++ 數(shù)據(jù)結(jié)構(gòu)中隊(duì)列的所有功能。

三、deque 和 vector的差別

  • deque 則是一種雙向開口的連續(xù)線性空間,vector是單向開口的連續(xù)線性空間。
  • deque 對象在隊(duì)列的兩端插入和刪除元素比較高效,vector 在序列末尾插入和刪除元素比較高效。
  • deque 允許在常數(shù)時(shí)間內(nèi)在序列頭部進(jìn)行元素的插入和刪除操作,并且 deque 沒有所有的 capacity() 觀念,它是動(dòng)態(tài)地以分段連續(xù)空間組合而成,隨時(shí)可以增加一段新的空間并鏈接起來。vector會(huì)因舊空間不足而重新配置一塊更大空間,然后復(fù)制元素,再釋放舊空間,即空間預(yù)留機(jī)制。

雖然 deque 也提供 Random Access Iterator,但它的迭代器并不是普通的指針,復(fù)雜度較高。因此除非必要,應(yīng)盡可能選擇使用 vector 而非 deque。對 deque 的排序操作,可以先完整復(fù)制到一個(gè) vector 中,使用 STL 中的排序操作對 vector 排序后,再復(fù)制回 deque。

deque 通常由一些獨(dú)立的區(qū)塊組成,第一個(gè)區(qū)塊朝某方向擴(kuò)展,最后一個(gè)區(qū)塊朝另一方向擴(kuò)展。它允許較為快速地隨機(jī)訪問,但不像 vector 一樣把所有對象保存在一個(gè)連續(xù)的內(nèi)存塊,而是多個(gè)連續(xù)的內(nèi)存塊,并且在一個(gè)映射結(jié)構(gòu)中保存對這些塊以及順序的跟蹤。

1、構(gòu)造函數(shù)

#include<deque>
deque<type> deq; ? ? ? ? ? ?//聲明一個(gè)元素類型為 type 的雙端隊(duì)列 deq
deque<type> deq(nSize); ? ? ? ? ? ?//聲明含有 nSize 個(gè)默認(rèn)初始化元素的 deq
deque<type> deq(nSize, value) ? ? ? ? ? ?//聲明含有 nSize 個(gè)值為 value 的元素的deq
deque<type> deq(MyDeque); ? ? ? ? ? ?//復(fù)制MyDeque到deq
deque<type> deq(first, last); ? ? ? ? ? ?//使用迭代器first,last范圍內(nèi)的元素初始化deq

2、常用成員函數(shù)

deq[nPos]; ? ? ? ? ? ?//訪問雙向序列中 nPos 位置上的元素
deq.front(); ? ? ? ? ? ?//返回第一個(gè)元素
deq.back(); ? ? ? ? ? ?//返回最后一個(gè)元素
deq.push_front(x); ? ? ? ? ? ?//把元素 x 插入到 deq 的頭部
deq.pop_front(); ? ? ? ? ? ?//彈出 deq 的第一個(gè)元素
deq.push_back(x); ? ? ? ? ? ?//把元素 x 插入到 deq 的尾部
deq.pop_back(); ? ? ? ? ? ?//彈出 deq 的最后一個(gè)元素

3、特點(diǎn)

  • 支持使用 [] 和 at() 進(jìn)行隨機(jī)訪問,但性能沒有 vector 好;
  • 可以在內(nèi)部進(jìn)行插入和刪除操作,但性能沒有 list 好;
  • deque 的元素存取和迭代器操作會(huì)稍微較慢,因?yàn)閮?nèi)部結(jié)構(gòu)中多一個(gè)間接過程;
  • deque 的迭代器是一種特殊的智能指針,能夠在不同區(qū)塊之間跳轉(zhuǎn);
  • deque 不支持對容量和內(nèi)存分配時(shí)機(jī)的控制。
  • deque 的內(nèi)存重分配優(yōu)于 vector,因?yàn)槠鋬?nèi)部不需要復(fù)制所有元素。
  • deque 的內(nèi)存塊不再被使用時(shí),會(huì)被釋放。但是該機(jī)制由實(shí)際操作版本控制是否執(zhí)行。

四、STL中容器的通用操作函數(shù)

最近在學(xué)習(xí) C++ 中 STL 標(biāo)準(zhǔn)庫中的東西,關(guān)于list、vector、deque、set、map等容器的操作函數(shù)中存在一些通用函數(shù),整理出來一起學(xué)習(xí)。

1. 構(gòu)造函數(shù)

ContType<T> C; ? ? ? ? ? ?//創(chuàng)建一個(gè)空容器
ContType<T> C(nSIze); ? ? ? ?//創(chuàng)建一個(gè)含有 nSize 個(gè)默認(rèn)元素的容器
ContType<T> C(nSize, Value); ? ?//創(chuàng)建一個(gè)含有 nSize 個(gè)值為 Value 的元素的容器
ContType<T> C1(C2); ?//復(fù)制一個(gè)同類型容器
ContType<T> C(first, last); ? ? ?//復(fù)制[first,last)范圍內(nèi)的元素到新容器中
C.~ContType(); ? ? ? ? ? ?//刪除所有元素,釋放內(nèi)存

2. 判斷函數(shù)

C.empty(); ? ? ? ? ? ?//判斷容器是否為空
C1==C2; ? ? ? ? ? ?//判斷c1是否等于c2

3. 訪問函數(shù)

lst.get_allocator(); ? ? ? ?//返回容器的內(nèi)存模型
C.begin(); ? ? ? ?//正向迭代器,指向第一個(gè)元素
C.end(); ? ? ? ? //正向迭代器,指向最后一個(gè)元素的下一位置
C.rbegin(); ? ? //反向迭代器,指向最后一個(gè)元素
C.rend(); ? ? ?//反向迭代器,指向第一個(gè)元素的前一個(gè)位置
C.size(); ? ? ?//返回容器當(dāng)前存儲(chǔ)的元素?cái)?shù)量
C.max_size(); ?//返回容器能容納的最大元素?cái)?shù)量

4. 賦值函數(shù)

C1=C2;//將c2的值賦給c1

//swap()交換函數(shù)
C1.swap(C2);//交換c1和c2的數(shù)據(jù)
Swap(C1,C2);//同上

//assign()賦值函數(shù)
C.assign(size_type nSize, const_type Value); ? ? ? ?//將list中元素替換為 nSize 個(gè)值為 Value 的元素
C.assign(iterator first,iterator last); ? ? ? ?//將[first,last)中的元素復(fù)制到當(dāng)前容器中
C.assign(ContType<T> &C2); ? ? ? ? ? //將另一個(gè)容器中的元素復(fù)制到當(dāng)前容器中

5. 操作函數(shù)

C.clear();//清空容器

//insert()插入元素
C.insert(iterator iter, const_type Value);//在 iter 指向的位置插入值為 Value的元素
C.insert(iterator iter,size_type num, const_type &Value);//在 iter 指向的位置插入 num 個(gè)值為 Value的元素
C.insert(iterator iter,iterator fisrt,last);//在 iter 指向的位置插入[first,end)區(qū)間內(nèi)的所有元素

//erase()刪除元素
C.erase(nPos,nSize);//刪除從下標(biāo) nPos 開始的 nSize 個(gè)元素
C.erase(iterstor iter);//刪除該迭代器指向的元素
C.erase(iterator first,iterator lase);//刪除[first,last)區(qū)間的元素

//vector、deque、list
C.front(); ? ? ? ?//返回第一個(gè)元素
C.back(); ? ? ? ?//返回最后一個(gè)元素
C.resize(); ? ? ? ?//改變list的大小
//deque、list
C.pop_front(); ? ? ? ?//刪除第一個(gè)元素
C.push_front(Value); ? ? ? ?//在容器頭部添加一個(gè)元素Value
//vector、deque、list
C.front(); ? ? ? ? ? ? ? //返回第一個(gè)元素
C.back(); ? ? ? ? ? ? ? //返回最后一個(gè)元素
C.resize(); ? ? ? ? ? ? //改變list的大小
C.pop_back(); ? ? ? ? ? //刪除最后一個(gè)元素
C.push_back(Value); ? ? //在容器末尾添加一個(gè)元素Value
//vector、list
C.reverse(); ? ? ? ?//把list中的元素反轉(zhuǎn)

到此這篇關(guān)于C++ 基礎(chǔ)函數(shù)的介紹及使用(Vector+deque)的文章就介紹到這了,更多相關(guān)C++ deque Vector內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Qt結(jié)合libqrencode生成二維碼的實(shí)現(xiàn)示例

    Qt結(jié)合libqrencode生成二維碼的實(shí)現(xiàn)示例

    本文主要介紹了Qt結(jié)合libqrencode生成二維碼的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語言實(shí)現(xiàn)簡單的停車場管理系統(tǒng)

    C語言實(shí)現(xiàn)簡單的停車場管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單的停車場管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語言結(jié)構(gòu)體數(shù)組同時(shí)賦值的另類用法

    C語言結(jié)構(gòu)體數(shù)組同時(shí)賦值的另類用法

    今天小編就為大家分享一篇關(guān)于C語言結(jié)構(gòu)體數(shù)組同時(shí)賦值的另類用法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 使用Visual Studio 2010/2013編譯V8引擎步驟分享

    使用Visual Studio 2010/2013編譯V8引擎步驟分享

    這篇文章主要介紹了使用Visual Studio 2013編譯V8引擎步驟分享,需要的朋友可以參考下
    2015-08-08
  • c語言實(shí)現(xiàn)輸入一組數(shù)自動(dòng)從大到小排列的實(shí)例代碼

    c語言實(shí)現(xiàn)輸入一組數(shù)自動(dòng)從大到小排列的實(shí)例代碼

    下面小編就為大家?guī)硪黄猚語言實(shí)現(xiàn)輸入一組數(shù)自動(dòng)從大到小排列的實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • VisualStudio?制作Dynamic?Link?Library動(dòng)態(tài)鏈接庫文件的詳細(xì)過程

    VisualStudio?制作Dynamic?Link?Library動(dòng)態(tài)鏈接庫文件的詳細(xì)過程

    這篇文章主要介紹了VisualStudio?制作Dynamic?Link?Library動(dòng)態(tài)鏈接庫文件的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • C++?引用與內(nèi)聯(lián)函數(shù)詳情

    C++?引用與內(nèi)聯(lián)函數(shù)詳情

    這篇文章主要介紹了C++?引用與內(nèi)聯(lián)函數(shù)詳情,主要分享一下關(guān)于引用的知識點(diǎn),這里都是一些比較基礎(chǔ)的知識,適合初學(xué)者,下文續(xù)航徐介紹需要的小伙伴可以參考一下
    2022-05-05
  • Qt在線安裝加速的實(shí)現(xiàn)

    Qt在線安裝加速的實(shí)現(xiàn)

    本文主要介紹了Qt在線安裝加速的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C語言實(shí)現(xiàn)歌手比賽系統(tǒng)

    C語言實(shí)現(xiàn)歌手比賽系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)歌手比賽系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++線程之thread詳解

    C++線程之thread詳解

    這篇文章主要為大家詳細(xì)介紹了C++線程中的thread,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03

最新評論