一、STL是什么
STL(Standard Template Library)標準庫:基本數(shù)據(jù)結構和基本的算法罐旗。
二、STL組成
容器唯蝶,迭代器九秀,適配器,算法粘我,函數(shù)對象(防函數(shù))鼓蜒,分配器
三、順序容器
容器 | 模板 | 特點 |
---|---|---|
向量容器 | vector |
快速在后面添加刪除元素,直接訪問任何元素 |
雙向列表容器 | list |
在任何位置快速插入都弹,刪除元素 |
雙向鏈表容器 | deque |
略 |
四娇豫、vector說明以及練習
用法:vector<type> v(元素個數(shù),初始化元素)
例子:說是初始化一個所有元素為0的十個元素的整型數(shù)組
vector<int> v(9,0) => int v[10] = {0};
特別用法:
a.迭代器
迭代器 | 作用 | 順序容器 |
---|---|---|
c.begin() |
第一個元素地址 | - |
c.end() |
最后一個元素的下一個地址 | - |
c.rbegin() |
反向頭迭代 | - |
c.rend() |
反向為迭代 | - |
函數(shù) | 作用 | 返回值 |
---|---|---|
v.push_back() |
追加元素 | - |
v.pop_back() |
刪除最后一個元素 | - |
v.size() |
獲取數(shù)組所有元素個數(shù) | - |
v.clear() |
清除數(shù)組 | - |
v.empty() |
判斷數(shù)組是否為空 | bool類型 |
用法:1.vector<type> v;
2.vector<type>::iterator it=begin();
例子:遍歷上面的數(shù)組
1.正向遍歷
int main(){
vector<int > v;
int n;
while (cin >> n){
v.push_back(n);//尾部添加元素
}
v[5] = 10; //數(shù)組式用法改變元素值
v.pop_back(); //刪除尾元素
for (int i=0;i<v.size();++i){ //v.size()獲取數(shù)組元素個數(shù)
cout << v[i] << endl;
}
}
#include <iostream>
#include <vector>
using namespace std;
int main(){
vevtor<int> v(9,0);
for(vector<int> iterator it = begin();it != v.end(); ++it){
cout << *it << " ";
}
cout << endl;
}
2.逆向遍歷
int main() {
vector<int> v(9,0);
for(vector<int> reverse_iterator it = v.rbegin();++it){
cout << *it << " ";
}
cout << endl;
}
五、list用法和vector類似
注意:迭代器都可以用畅厢;算法使用需要加頭文件<algorithm>
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
int main(){
list<int> v; //
int n;
while(cin >> n){
v.push_back(n);//
}
// v[5] = 10;//
//
//for(int i=0;i<v.size();++i){
// cout << v[i] << endl;
//}
//
v.pop_back();
//for(int i=0;i<v.size();++i){
// cout << v[i] << endl;
//}
// while遍歷
list<int>::iterator it = v.begin();
while(it != v.end()){
cout << *it << " ";
++it;
}
cout << endl;
//
for(list<int>::iterator it = v.begin();it != v.end();++it){
cout << *it << " ";
}
cout << endl;
// reverse(v.begin(),v.end());//將數(shù)組反向
// 反向遍歷
for(list<int>::reverse_iterator it = v.rbegin();it != v.rend();++it){
cout << *it << " ";
}
cout << endl;
int arr[] = {1,2,3,4,5};
int* p = arr;
while(p != arr+5){
cout << *p << " ";
++p;
}
cout << endl;
}
list下節(jié)了解詳情
作者:謙放
鏈接:http://www.reibang.com/u/9cd2da70288b
來源:簡書
簡書著作權歸作者所有冯痢,任何形式的轉載都請聯(lián)系作者獲得授權并注明出處。