一、string
字符串输入scanf("%[^\n]",str)
一、string 输入字符串
1、不带空格的输入 直接cin>>str;
2、带空格的输入 getline(cin,str,delm) delm为输入截至条件,不加的话默认到回车结束。
cin>>str
getline(cin,str)
二、string str 的最后一位的访问和删除
str.back() //字符串最后一个字符
str.pop_back() //删除字符串最后一个字符
三、string find()
str.find('a',x)//如果不加x,默认从第一个字符开始找
str.find("hello") //也可以查找字符串,返回值为字符串第一个字符下标
str.find("hello") == str.npos //表示没有找到
四、str.insert() str.substr()
str.insert(x,"y")//从x的位置插入y这个字符串
str.substr(x,y)//从x开始读y个字符
str.erase
string s1("value");
string s2("value");
string s3("value");
string s4("value");
s1.erase();//执行后,s1为空
s2.erase(0,2); //执行后,s2为”lue”
s3.erase(s3.begin());//执行后,s3为”alue”
s4.erase(s4.begin(),++s4.begin());//执行后,s4为”alue”
五、判断是否这个字符串有字符
str.empty()
if (str.empty()) {
cout << “字符串为空”;
}
else {
cout << "字符串不为空";
}
六、反转字符串、
string str = "abs";
reverse(str.begin(),str.end());
cout<<str<<endl;
二、unordered_map
#include<unordered_map>
unordered_map<int,int> S;
if(S.count(x)==0) cout<<"x不在该容器中";
三、结构体重载
struct node{
int sum,c,d;
bool operator < (const node &W) const{
if(W.sum==sum) return c<W.c;//从小到大
if(W.c==c) return d<W.d;
return sum<W.sum;
}
}a[N];
四、优先队列
priority_queue<int> q;//大根堆
priority_queue<int,vector<int>,greater<int>> q;//小根堆
q.top() //取最上边的值
五、sort函数
sort(a,a+n,greater<int>() );//从大到小排
bool cmp(node X,node Y)
{
if(X.c==Y.c) return X.a<Y.a;//从小到大
}//结构体排序