C++中vector的用法實例解析。本站提示廣大學習愛好者:(C++中vector的用法實例解析)文章只能為提供參考,不一定能成為您想要的結果。以下是C++中vector的用法實例解析正文
本文實例展現了C++中的vector用法,分享給年夜家供年夜家參考。詳細以下:
1、概述
vector是C++尺度模板庫中的部門內容,它是一個多功效的,可以或許操作多種數據構造和算法的模板類和函數庫。vector是一個容器,它可以或許寄存各類類型的對象,簡略地說,vector是一個可以或許寄存隨意率性類型的靜態數組,可以靜態轉變年夜小。
例如:
// c說話作風 int myHouse[100] ; // 采取vector vector<int> vecMyHouse(100);
當如上界說後,vecMyHouse便可以寄存100個int型的數據了。
1. 它可以像通俗數組一樣拜訪
例如:
vecMyHouse[50] = 1024;
2. 你可以次序地向容器中填湊數據
例如:
int i =0 ; for( ;i< 25; i++ ) { vecMyHouse.push_back(1); }
3. 它還可以靜態地轉變它的年夜小,經由過程上面這條語句完成
將容器的年夜小改成400,如許容器中便可以包容400個int型數據了
例如:
vecMyHouse.resize(400);
4. 你也能夠在容器中裝入自界說的數據類型
例如:
// 自界說一個class class Cmyclass { }; // 界說一個寄存class的容器 vector<Cmyclass> vecMyHouse;
5. 你可以在界說容器時為它賦初值
// 界說一個包容100個int型數據的容器,初值賦為0 vector<int> vecMyHouse(100,0);
6. 你可以把一個容器的對象賦值給別的一個容器
例如:
// 界說一個包容100個int型數據的容器,初值賦為0 vector<int> vecMyHouse(100,0); // 界說一個新的容器,內容與上述容器一樣 vector<int> myVec ; myVec = vecMyHouse;
2、 以上是vector容器的簡略引見,上面將具體引見它的其他功效:
1. 為了應用vector,必需在你的頭文件中包括上面的代碼:
#include <vector>
2. vector屬於std定名域的,是以須要經由過程定名限制,可以在文件開首加上
using std::vector;
或許
using namespace std;
或許直接在應用vector的代碼前加前綴
例如:
std::vector<int> myHouse;
3. vector供給以下函數或操作:
上面羅列了部門經常使用的功效
// 界說一個vector std::vector<int> c;
可使用的功效:
c.clear() 移除容器中一切數據。
c.empty() 斷定容器能否為空。
c.erase(pos) 刪除pos地位的數據
c.erase(beg,end) 刪除[beg,end)區間的數據
c.front() 傳回第一個數據。
c.insert(pos,elem) 在pos地位拔出一個elem拷貝
c.pop_back() 刪除最初一個數據。
c.push_back(elem) 在尾部參加一個數據。
c.resize(num) 從新設置該容器的年夜小
c.size() 回容器中現實數據的個數。
c.begin() 前往指向容器第一個元素的迭代器
c.end() 前往指向容器最初一個元素的迭代器
3、上面描寫一下甚麼是迭代器
迭代器相當於指針,例如:
// 關於變量而言,應用指針指向對應的變量 // 今後便可以應用 * 加指針來操作該變量了 int a = 10; int *p; p = &a;
應用指針操作該變量
例如: *p = 11; // 操作後a變成 11
關於容器,應用迭代器操作容器中對應地位的值
當迭代器指向了容器中的某地位,則可使用 * 加迭代器操作該地位了
// 界說一個vector std::vector<int> myVec; //添加10個元素 for(int j =0 ; j<10 ; j++) { myVec.push_back(j); }
// 界說一個迭代器 std::vector<int>::iterator p; // 指向容器的首個元素 p = myVec.begin(); // 挪動到下一個元素 p ++; // 修正該元素賦值 *p = 20 ; //< 則myVec容器中的第二個值被修正為了20 // 輪回掃描迭代器,轉變一切的值 p = myVec.begin(); for( ; p!= myVec.end(); p++ ) { *p = 50; }
以上簡略講述了vector的用法,僅供入門之用,上面以實例情勢持續加以解釋。
1.vector 的數據的存入和輸入:
#include<stdio.h> #include<vector> #include <iostream> using namespace std; void main() { int i = 0; vector<int> v; for( i = 0; i < 10; i++ ) { v.push_back( i );//把元素一個一個存入到vector中 } //對存入的數據清空 for( i = 0; i < v.size(); i++ )//v.size() 表現vector存入元素的個數 { cout << v[ i ] << " "; //把每一個元素顯示出來 } cont << endl; }
注:你也能夠用v.begin()和v.end() 來獲得vector開端的和停止的元素地址的指針地位。
你也能夠如許做:
vector<int>::iterator iter; for( iter = v.begin(); iter != v.end(); iter++ ) { cout << *iter << endl; }
2. 關於二維vector的界說。
1)界說一個10個vector元素,並對每一個vector符值1-10。
#include<stdio.h> #include<vector> #include <iostream> using namespace std; void main() { int i = 0, j = 0; //界說一個二維的靜態數組,有10行,每行是一個用一個vector存儲這一行的數據。 //所以每行的長度是可以變更的。之所以用到vector<int>(0)是對vector初始化,不然不克不及對vector存入元素。 vector< vector<int> > Array( 10, vector<int>(0) ); for( j = 0; j < 10; j++ ) { for ( i = 0; i < 9; i++ ) { Array[ j ].push_back( i ); } } for( j = 0; j < 10; j++ ) { for( i = 0; i < Array[ j ].size(); i++ ) { cout << Array[ j ][ i ] << " "; } cout<< endl; } }
2)界說一個行列都是變更的數組。
#include<stdio.h> #include<vector> #include <iostream> using namespace std; void main() { int i = 0, j = 0; vector< vector<int> > Array; vector< int > line; for( j = 0; j < 10; j++ ) { Array.push_back( line );//要對每個vector初始化,不然不克不及存入元素。 for ( i = 0; i < 9; i++ ) { Array[ j ].push_back( i ); } } for( j = 0; j < 10; j++ ) { for( i = 0; i < Array[ j ].size(); i++ ) { cout << Array[ j ][ i ] << " "; } cout<< endl; } }
應用 vettor erase 指定元素,示例以下:
#include "iostream" #include "vector" using namespace std; int main() { vector<int> arr; arr.push_back(6); arr.push_back(8); arr.push_back(3); arr.push_back(8); for(vector<int>::iterator it=arr.begin(); it!=arr.end(); ) { if(* it == 8) { it = arr.erase(it); } else { ++it; } } cout << "After remove 8:\n"; for(vector<int>::iterator it = arr.begin(); it < arr.end(); ++it) { cout << * it << " "; } cout << endl; }
願望本文所述實例對年夜家控制C++中vector用法起到必定的贊助感化。