vector詳解
1.調用vector的頭文件
注意:c++編程中填寫這個頭文件
2.vector的用法
注意:大概來講,vector就是一個變長數組,與a[]這種普通數組不同的是,他不用定義多長,是根據用戶的用法變化的,同時它的用法及方法也與普通數組不同
3.vector的存取方法及特殊
注意:vector的存取與棧相同(即一種無蓋有底的“洞”,從頂端存入,從頂端取出);
3.vector數據的讀取及其他方法
注意:iterator是一種迭代器,即一種讀取器,其功能類似for循環;利用iterator來輸出或存取大量的數據;
vector優勢:
大小能否變化
vector屬於變長容器,即可以根據數據的插入刪除重新構建容器容量,但array和數組屬於定長容量。
初始化
數組不能將數組的內容拷貝給其他數組作為初始值,也不能用數組為其他數組賦值,而向量可以。
vector提供了更好的數據訪問機制,即可以使用及at訪問方式,使得訪問更加安全。而數組只能通過下標訪問,在程序的設計過程中,更容易引發訪問錯誤。
vector提供了size和判空的獲取機制,而數組只能通過遍歷或者通過額外的變量記錄數組的size。
vector提供了可以動態插入和刪除元素的機制,而array和數組則無法做到,或者說array和數組需要完成該功能則需要自己實現完成。
深度搜索:內存中的位置
C++中數組為內置的數據類型,存放在棧中,其內存的分配和釋放完全由系統自動完成;vector,存放在堆中,由STL庫中程序負責內存的分配和釋放,使用方便。
vector實例幫助理解
題目描述
小魚最近被要求參加一個數字游戲,要求它把看到的一串數字(長度不一定,以0結束,最多不超過100個,數字不超過2^32-1),記住了然后反着念出來(表示結束的數字0就不要念出來了)。這對小魚的那點記憶力來說實在是太難了,你也不想想小魚的整個腦袋才多大,其中一部分還是好吃的肉!所以請你幫小魚編程解決這個問題。
輸入格式
一行內輸入一串整數,以0結束,以空格間隔。
輸出格式
一行內倒着輸出這一串整數,以空格間隔。
輸入輸出樣例
輸入
3 65 23 5 34 1 30 0 |
輸出
30 1 34 5 23 65 3 |
具體代碼:
#include<iostream> #include<vector> using namespace std; int main(){ vector<int> a; int count=0; int x; while(cin>>x){ if(x==0) break; else a.push_back(x); } for(vector<int>::iterator it=a.end()-1;it>=a.begin();it--){ //iterator迭代器輸入輸出 cout<<(*it)<<" "; } return 0; }
使用iterator迭代器進行迭代輸入輸出;
注意:vector數組由於其特殊性適用一些算法,但也不適用一些場合,所以一般使用普通的數組即可;