C++STL模板庫之vector
目錄
- STL之Vecter
- 一丶STL簡介
- 二丶Vector用法
- 1.vector容器的使用
- 2.vector叠代器.
- 3.vector中的方法.
STL之Vecter
一丶STL簡介
STL 是標準模板庫的意思. 就是數據結構,封裝成類讓我們使用. 使用的時候我們要了解數據結構才可以使用這些類.因為數據結構不知道是什麽結構你用類的話也用不明白.
二丶Vector用法
1.vector容器的使用
首先介紹的第一個序列容器就是 vector. 它底層是數組.可以理解為是動態數組.
我們自己也可以寫一個動態數組.然後 將運算符[] 進行重載.
使用之前需要包含頭文件,以及使用命名空間.std. 類是在這裏面定義的.
#include<vector>
using namespace std;
因為是動態數組.所以vector容器操作的都是尾部操作.就也是數組後面進行增刪改查.
2.vector叠代器.
vector的叠代器有兩種.
vector<object>::const_iterator const_iterator叠代器是不能修改內容的
vector<object>::iterator iterator定義的叠代器是可讀可寫的.
編寫代碼如下:
棧代碼:
#include <stdio.h> #include <stdlib.h> #include <string> #include <vector> #include <iostream> using namespace std; int main(char *argc,char *argv[]) { vector<int> a; a.push_back(1); a.push_back(2); vector<int>::const_iterator it = a.begin(); while (it != a.end()) { cout << *it << endl; ++it; } system("pause"); }
方法:
push_back(Value); 是往數組後面添加值.
begin(); 獲取第一個元素
end(); 獲取最後一個元素.
*it 獲取值.
上面的代碼使我們存放的int類型數據. 其實vector可以當做數組來用.是變長的數組.
跨平臺的. 我們不光可以存儲int 也可以存儲 基本類型.以及指針類型都是可以的.或者存儲
函數指針也可以.
例如下:
typedef int(*pFn)(int , int ); int Add(int a, int b) { return a + b; } int main(char *argc,char *argv[]) { pFn p = Add; vector<pFn> pfnve; pfnve.push_back(p); vector<pFn>::iterator it = pfnve.begin(); while (it != pfnve.end()) { cout << (*it)(1, 2) << endl; //第一種輸出方式 cout << it[0](1, 4) << endl; //使用[]操作符輸出 it++; } system("pause"); }
結果第一個會輸出3,第二個會輸出五,因為我們存儲了一個函數指針.如果存儲多個.則可以進行多次調用.
堆代碼:
上面使用的 vector是在棧中定義的,我們也可以定義為指針.也就是在堆中使用.
代碼如下:
int main(char *argc,char *argv[])
{
vector<int> *a = new vector<int>;
a->push_back(1);
a->push_back(2);
a->push_back(4);
a->push_back(3);
a->push_back(5);
vector<int>::const_iterator it = a->cbegin();
while (it != a->cend())
{
cout << (*it) << endl;
cout << it[0] << endl;
it++;
}
cout << "---------------------------" << endl;
system("pause");
}
cbegin(); 也是返回第一個元素,前提是你使用const_iterator 叠代器才可以. cbegin()c開頭就是const的意思.常量的意思.也就是說不能更改.
3.vector中的方法.
push_back(Value); 往vector容器後面添加一個數據.
begin(); 獲取第一個元素.
end(); 獲取最後一個元素.
size(); 容器中元素的個數,可以通過 for(i < xx.size());的方式遍歷
clear(); 清空容器中的所有元素
front(); 返回容器中第一個元素的值,跟begin()不同,它是返回值
back(); 返回容器中最後一個元素的值
pop_back(); 返回容器中最後一個元素的值,並且清空最後一個元素.
erase(); 刪除容器中任意一個位置的元素.
C++STL模板庫之vector