国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++ push方法與push_back方法的使用與區別

2020-01-26 13:23:04
字體:
來源:轉載
供稿:網友

【摘要】

push與push_back是STL中常見的方法,都是向數據結構中添加元素。初識STL,對于添加元素的方法以產生混淆,這里暫對兩種方法作出比較分析。此外,本文還將簡述push對應的stack與queue系列,常見方法的介紹,以及與push_back相對應的vector系列常見方法介紹。詳見下文。

list 也是使用 push_back .

【正文】

push_back 方法介紹

vector::void push_back (const value_type& val);

vector::void push_back (value_type&& val);

該函數將一個新的元素加到vector的最后面,位置為當前最后一個元素的下一個元素,新的元素的值是val的拷貝(或者是移動拷貝)

vector 常見方法介紹

(1)vector< 類型 > 標識符 ;

(2)vector< 類型 > 標識符(最大容量) ;
(3)vector< 類型 > 標識符(最大容量,初始所有值);
(4) int i[4] = {12,3,4,5};
vector< 類型 > vi(i , i+2); //得到i索引值為3以后的值 ; 
(5)vector< vector<int> > //vi 定義2維的容器;記得一定要有空格,不然可能會報錯

vector< int > line // 在使用的時候一定要首先將vi個行進行初始化; for(int i = 0 ; i < 10 ; i ++) { vector.push_back(line); } 

vector 定義二維數組,長度可以不預先確定。
(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 ++) /// 第一種調用方法 { cout <<vi[i] <<" " ; } for(vector<int>::iterator it = vi.begin() ;it !=vi.end() ; it++) ///第二種調用方法 { 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 ; ///返回容器內找到值的位置。

(9)使用數組對C++ vector進行初始化

int i[10] ={1,2,3,4,5,6,7,78,8} ; ///第一種 vector<int> vi(i+1,i+3); ///從第2個元素到第3個元素 for(vector <int>::interator it = vi.begin() ; it != vi.end() ; it++) { cout << *it <<" " ; } 

(10) 結構體的 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 函數介紹

stack::push();//在棧頂增加元素queue::push();//將x 接到隊列的末端。

stack與queue常見方法介紹

1、stack

stack 模板類的定義在<stack>頭文件中。

stack 模板類需要兩個模板參數,一個是元素類型,一個容器類型,但只有元素類型是必要的,在不指定容器類型時,默認的容器類型為deque。

定義stack 對象的示例代碼如下:

stack<int> s1;

stack<string> s2;

stack 的基本操作有:

入棧,如例:s.push();在棧頂增加元素

出棧,如例:s.pop();注意,出棧操作只是刪除棧頂元素,并不返回該元素。

訪問棧頂,如例:s.top()

判斷棧空,如例:s.empty(),當棧空時,返回true。

訪問棧中的元素個數,如例:s.size()。

2、queue

queue 模板類的定義在<queue>頭文件中。

與stack 模板類很相似,queue 模板類也需要兩個模板參數,一個是元素類型,一個容器類型,元素類型是必要的,容器類型是可選的,默認為deque 類型。

定義queue 對象的示例代碼如下:

queue<int> q1;

queue<double> q2;

queue 的基本操作有:

入隊,如例:q.push(x); 將x 接到隊列的末端。

出隊,如例:q.pop(); 彈出隊列的第一個元素,注意,并不會返回被彈出元素的值。

訪問隊首元素,如例:q.front(),即最早被壓入隊列的元素。

訪問隊尾元素,如例:q.back(),即最后被壓入隊列的元素。

判斷隊列空,如例:q.empty(),當隊列空時,返回true。

訪問隊列中的元素個數,如例:q.size()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 偏关县| 黑龙江省| 宜君县| 汉川市| 昔阳县| 革吉县| 区。| 苗栗市| 阿拉尔市| 广昌县| 平江县| 湖南省| 电白县| 石阡县| 东乡族自治县| 苍溪县| 洪湖市| 大理市| 鄂伦春自治旗| 延津县| 玉田县| 宜君县| 乐安县| 名山县| 双江| 荔波县| 西乌| 苏尼特右旗| 班玛县| 漳浦县| 江山市| 福鼎市| 内乡县| 双城市| 礼泉县| 铁岭市| 安国市| 清流县| 无为县| 琼海市| 宝兴县|