C++ push方法與push_back方法 淺析


轉自https://blog.csdn.net/u013630349/article/details/46853297

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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM