标准库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();