c++标准模板库
阉割版
1.std::vector
动态数组实现的线性表
#include <vector>
vector<类型> arr(长度,[初值]);
#include <vector>
int main(){
//底层是动态数组实现的,长度自动可变
vector<int> arr(10,0);
vector <vector<int>> arr(10,vector<int> arr(10,0));
arr.push_back(1);//尾接一个元素,vector长度自动+1
arr.pop_back();//删除vector尾部的一个元素,vector长度自动-1
int length=arr.size();//获取长度
arr.clear();//清空
int a =arr.empty();//判空,返回0或者1
arr.resize();//改变长度
}
2.std::list
双向链表实现的线性表
3.std::deque
双端队列
4.队列std::queue
#include <queue>
//构造 queue<类型> 栈名
int main(){queue <int> q;q.push(1);//进队q.pop();//出队int a=q.front();//取队首元素int b=q.back();//取队尾元素int a = q.empty();//判空
}
5.std::forward_list(C++11引入)
单向链表实现的线性表
6.栈stack
#include <stack>
int main(){
stack <int>stk;
stk.push(1);//入栈
stk.pop();//出栈
int a=stk.top();//取栈顶元素
}
7.字符串string
#include <string>
int main(){string s1;//构造字符串为空string s2="sfdsfs";string s3(10,'7');//(字符数,每个字符初值)cin>>s1;cout<<s1;s2[0]='d';//修改某个字符if(s1==s2)//判断两个字符串是否相等s2+='dfsgsgg';//尾接s2.substr(2,3);//取子串,.substr(起始下标,字串长度)
}
8.集合set
底层原理是红黑树
set<类型,比较器> 集合名
set <int> st1;//储存int 的集合(从小到大)
set<int,greater<int>> st2;//储存int的集合(从大到小)
9.映射map
底层原理:红黑树
map<int,int> mp1;
map<int,int,greater<int>> map2;
map<键类型,值类型,比较器> 映射名;
10.优先队列priority_queue
底层原理是二叉堆
priority_queue<类型,容器,比较器> 优先队列名
priority_queue<int> q1;//存储int的大顶堆
priority_queue<int,vector<int>,greater<int>> q2;//储存int的小顶堆