C++ push方法與push_back方法的使用與區(qū)別
【摘要】
push與push_back是STL中常見的方法,都是向數(shù)據(jù)結(jié)構(gòu)中添加元素。初識(shí)STL,對(duì)于添加元素的方法以產(chǎn)生混淆,這里暫對(duì)兩種方法作出比較分析。此外,本文還將簡(jiǎn)述push對(duì)應(yīng)的stack與queue系列,常見方法的介紹,以及與push_back相對(duì)應(yīng)的vector系列常見方法介紹。詳見下文。
list 也是使用 push_back .
【正文】
push_back 方法介紹
vector::void push_back (const value_type& val);
vector::void push_back (value_type&& val);
該函數(shù)將一個(gè)新的元素加到vector的最后面,位置為當(dāng)前最后一個(gè)元素的下一個(gè)元素,新的元素的值是val的拷貝(或者是移動(dòng)拷貝)
vector 常見方法介紹
(1)vector< 類型 > 標(biāo)識(shí)符 ;
(2)vector< 類型 > 標(biāo)識(shí)符(最大容量) ;
(3)vector< 類型 > 標(biāo)識(shí)符(最大容量,初始所有值);
(4) int i[4] = {12,3,4,5};
vector< 類型 > vi(i , i+2); //得到i索引值為3以后的值 ;
(5)vector< vector<int> > //vi 定義2維的容器;記得一定要有空格,不然可能會(huì)報(bào)錯(cuò)
vector< int > line // 在使用的時(shí)候一定要首先將vi個(gè)行進(jìn)行初始化; for(int i = 0 ; i < 10 ; i ++) { vector.push_back(line); }
vector 定義二維數(shù)組,長(zhǎng)度可以不預(yù)先確定。
(6)C++ vector排序
vector< int > vi ; vi.push_back(1); vi.push_back(3); vi.push_back(0); sort(vi.begin() , vi.end()); /// /從小到大 reverse(vi.begin(),vi.end()); /// 從大到小
(7)順序訪問
vector < int > vi ; for( int i = 0 ; i < 10 ; i ++) { vi.push_back(i); } for(int i = 0 ; i < 10 ; i ++) /// 第一種調(diào)用方法 { cout <<vi[i] <<" " ; } for(vector<int>::iterator it = vi.begin() ;it !=vi.end() ; it++) ///第二種調(diào)用方法 { cout << *it << " " ; }
(8)查找
vector < int > vi ; for( int i = 0 ; i < 10 ; i ++) { vector.push_back(i); } vector < int >::interator it = find(vi.begin() , vi.end(),3) ; cout << *it << endl ; ///返回容器內(nèi)找到值的位置。
(9)使用數(shù)組對(duì)C++ vector進(jìn)行初始化
int i[10] ={1,2,3,4,5,6,7,78,8} ; ///第一種 vector<int> vi(i+1,i+3); ///從第2個(gè)元素到第3個(gè)元素 for(vector <int>::interator it = vi.begin() ; it != vi.end() ; it++) { cout << *it <<" " ; }
(10) 結(jié)構(gòu)體的 vector
struct temp { public : string str ; public : int id ; }tmp; int main() { vector <temp> t ; temp w1 ; w1.str = "Hello world" ; w1.id = 1 ; t.push_back(t1); cout << w1.str << "," <<w1.id <<endl ; return 0 ; }
push 函數(shù)介紹
stack::push();//在棧頂增加元素 queue::push();//將x 接到隊(duì)列的末端。
stack與queue常見方法介紹
1、stack
stack 模板類的定義在<stack>頭文件中。
stack 模板類需要兩個(gè)模板參數(shù),一個(gè)是元素類型,一個(gè)容器類型,但只有元素類型是必要的,在不指定容器類型時(shí),默認(rèn)的容器類型為deque。
定義stack 對(duì)象的示例代碼如下:
stack<int> s1;
stack<string> s2;
stack 的基本操作有:
入棧,如例:s.push();在棧頂增加元素
出棧,如例:s.pop();注意,出棧操作只是刪除棧頂元素,并不返回該元素。
訪問棧頂,如例:s.top()
判斷??眨缋簊.empty(),當(dāng)棧空時(shí),返回true。
訪問棧中的元素個(gè)數(shù),如例:s.size()。
2、queue
queue 模板類的定義在<queue>頭文件中。
與stack 模板類很相似,queue 模板類也需要兩個(gè)模板參數(shù),一個(gè)是元素類型,一個(gè)容器類型,元素類型是必要的,容器類型是可選的,默認(rèn)為deque 類型。
定義queue 對(duì)象的示例代碼如下:
queue<int> q1;
queue<double> q2;
queue 的基本操作有:
入隊(duì),如例:q.push(x); 將x 接到隊(duì)列的末端。
出隊(duì),如例:q.pop(); 彈出隊(duì)列的第一個(gè)元素,注意,并不會(huì)返回被彈出元素的值。
訪問隊(duì)首元素,如例:q.front(),即最早被壓入隊(duì)列的元素。
訪問隊(duì)尾元素,如例:q.back(),即最后被壓入隊(duì)列的元素。
判斷隊(duì)列空,如例:q.empty(),當(dāng)隊(duì)列空時(shí),返回true。
訪問隊(duì)列中的元素個(gè)數(shù),如例:q.size()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
linux c 查找使用庫的cflags與libs的方法詳解
本篇文章是對(duì)在linux中使用c語言查找使用庫的cflags與libs的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C++/Php/Python/Shell 程序按行讀取文件或者控制臺(tái)的實(shí)現(xiàn)
下面小編就為大家?guī)硪黄狢++/Php/Python/Shell 程序按行讀取文件或者控制臺(tái)的實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03C語言函數(shù)調(diào)用基礎(chǔ)應(yīng)用詳解
函數(shù)就是一段封裝好的,可以重復(fù)使用的代碼,它使得我們的程序更加模塊化,不需要編寫大量重復(fù)的代碼。這篇文章主要介紹了c語言是如何處理函數(shù)調(diào)用的?需要的朋友可以參考下2023-02-02利用C++如何實(shí)現(xiàn)一個(gè)阻塞隊(duì)列詳解
這篇文章主要給大家介紹了關(guān)于利用C++如何實(shí)現(xiàn)一個(gè)阻塞隊(duì)列的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10C++命名空間?缺省參數(shù)?const總結(jié)?引用總結(jié)?內(nèi)聯(lián)函數(shù)?auto關(guān)鍵字詳解
這篇文章主要介紹了C++命名空間?缺省參數(shù)?const總結(jié)?引用總結(jié)?內(nèi)聯(lián)函數(shù)?auto關(guān)鍵字詳解的相關(guān)資料,需要的朋友可以參考下2023-01-01Qt實(shí)現(xiàn)導(dǎo)出QTableWidget/QTableView數(shù)據(jù)
這篇文章主要介紹了在Qt中實(shí)現(xiàn)將QTableWidget或者QTableView中的數(shù)據(jù)直接導(dǎo)出的示例代碼,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-01-01