基础
sizeof(...);//返回大小,以字节为单位
typeid(a).name();//返回类型
to_string(2); //返回字符串“2”
string s="123";
s[0];//类型为char
s.fing('2'); //返回索引1
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode *p=new ListNode(2);
ListNode *q=NULL;
C++ stack
#include<stack>
stack<string> s;
s.push("hello!");
s.size();
if(s.empty());栈为空返回true
string str=s.top();
s.pop();
stack<string> s2=s; //复制栈
C++ queue
#include<queue>
queue<int> q;
q.size();
q.front();
q.back();
q.push(2);
int num=q.top();
q.pop();
if(q.empty());
queue<int>q2=q; //复制队列
q=queue<int>(); //设置为空队列
C++ vector
#include<vector> //vector动态数组,容器
//初始化
vector<int> v;
vector<string> v2(10,"hello"); //大小为10,初值为hello的向量
vector<int> v3(5,(1,2,3,4,5)); //批量初始化
vector<vector<int>> v3; //二维数组 v[i][j]访问
//函数
v.size();
if(v.empty());
sort(v.begin(),v.end()); //v.begin()指第一个数 v.end()指最后一个后面的数
reverse(v.begin(),v.end());
min_element(v.begin(),v.end()); //返回最小值地址
max_element(v.begin(),v.end()); //返回最大值地址
//插入
v.push_back(2);
v.insert(v.begin(),2); //在开头插入2
//遍历
for(int i=0;i<v.size();i++)
cout<<v[i];
vector<int>::iterator it;
for(it=v.begin();it!=v.end();it++)
cout<<*it;
//删除
v.erase(v.begin(),v.begin()+3); //删除开头3个
v.clear();
v.pop_back();//删除最后一位
it=v.erase(it); //删除此时迭代器指向元素,并返回下一个元素指向
//截取
vector<int> v4(v1.begin(),v1.begin()+5); //截取v1前四个数
C++ map
#include<map>
using namespace std;
//初始化
map<int,string> m; //默认均为0或""
//赋值
m[0]="a";
m[1]="b";
m[2]="c";
pair<int,string> value(3,"d");
m.insert(value);
//遍历查询
map<int,string>::iterator it=m.begin();
for(;it!=m.end();it++)
cout<<it->first<<" "<<it->second<<endl;
it->second="abc"; //可改变value值,不可改key值
it=m.find(5); //查找key值
if(it=m.end())
cout<<"NO Match";
//删除
m.erase(it);
m.erase(m.begin(),m.end());m.erase(m.begin(),m.end());
m.erase("d");
集合
#include<set>
using namespace std;
//集合,自动排序
unordered_set<int> s;
set<int> s;
s.insert(2);
s.insert(5);
if(s.find(6)==s.end())
cout<<"No Match";
cout<<*s.rbegin(); //输出最后一个值
s.erase(2);