1. 程式人生 > >C++ push方法與push_back方法

C++ push方法與push_back方法

摘要】

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