標準庫STL
- stringstream
- vector
- 自定義類型
- 初始化為一個數
- queue
stringstream
- 頭文件sstream。格式化字符流
#include <iostream>
#include <sstream>
using namespace std;
int main(){stringstream ss;// hex 以十六進制保存 oct是8進制ss <<89<<" Hex: "<< hex<<89<<" Oct: "<< oct <<89;cout<<ss.str()<<endl;//89 Hex: 59 Oct: 131int a,b,c;string s1;ss >> hex >> a;//a:137cout <<"a:"<<a<<endl;ss >> s1;cout<<"s1:"<<s1<<endl;//s1:Hex:ss>>dec>>b;cout<<"b:"<<b<<endl;//b:59ss.ignore(6);//忽略空空Oct:6個字符 ss >>oct>>c;cout<<"c:"<<c<<endl;//c:89
}
vector
動態數組
- 文件
#include<vector>
- 定義
? vector<數據類型> 變量名;
? 如,vector vec; 定義一個int類型名叫vec的動態數組
- 插入元素:
? vec.push_back(1);// vec中的元素[1]
? vec.push_back(2);// vec中的元素[1,2]
? vec.push_back(3);// vec中的元素[1,2,3]
- 刪除元素:pop_back(),刪除動態數組中最后一個元素
? 如果動態數組為空,用pop_back會出錯
? vec.pop_back(3);
- 數組長度:.size()
? vec.size();
? vec.size()-1,動態數組大小范圍,最后一個元素下標
- 訪問元素
與普通數組類似:
? vec[0] 訪問第一個元素
- 遍歷
vector<int>vec;? for(int i=0;i<vec.size();i++){? cout<<vec[i]<<" ";? }
- 清空及釋放內存
? vector().swap(vec);
是否為空:
? vec.empty()
- 整體賦值
? vectorvec1;
? vectorvec2;
? vec1.push_back(1);
? vec1.push_back(2);
? vec2=vec1;//vec2與vec1一模一樣
- 排序
使用迭代器
? 全排序,sort(vec.begin(),vec.end());
? 對前3數排序,sort(vec.begin(),vec.begin()+3);
自定義類型
struct Stu{? string name;? int score;}? vector<Stu>vec;? Stu a;? a.name="abc";? a.score=100;? vec.push_back(a);? vec.push_back({"bbb",90});
初始化為一個數
? vectorvec(100,0);//vec是大小為100,所有值為0的動態數組
queue
- 頭文件
#include <queue>
-
特點:先進先出,后進后出
-
定義:
? queue<數據類型> 名稱
- 入隊:
? queue que;
? que.push(1);
- 刪除一個元素:
? que.pop();
- 訪問隊首元素:
? que.front();
- 清空隊列:
while(!que.empty()){? que.pop();? }
? empty()檢測隊列是否為空,空則返回true;
- 隊列長度:
? que.size();