一.string
1.string 的构造
string str; //生成空字符串
string s(str); //生成与字符串str一样的字符串s
string s(str, strbegin,strlen); //将字符串str中从下标strbegin开始长度位strlen的字符串作为s的初始字符串
string s(num ,c); //生成num个c字符的字符串
2.string 的大小和容量
s.size() //返回string对象字符个数
3.string的字符串比较
可直接使用比较操作符(>,>=,<,<=,==,!=)比较字典序
4. string的插入:push_back() 和 insert()
s.push_back() 尾插
s.insert(s.begin(),"1") 在指定的位置之前插入
5. string的拼接:加号“+”
string a = "i "
string b = "love "
string c = "you"
string s = a+b+c;
6.string的删除:erase()
s.erase(s.begin()+i,s.begin()+j) 删除s中下标>=i <=j的全部字符
7.string的字符替换
s.replace(s.begin()+i,s.begin()+j,str); 将当前字符串从i到j-1(左闭右开)的部分替换成str
8.string的大小写转换
string s = "ABCDEFG";
//方法1:
//转小写
for( int i = 0; i < s.size(); i++ )
{
s[i] = tolower(s[i]);
}
//转大写
for( int i = 0; i < s.size(); i++ )
{
s[i] = toupper(s[i]);
}
//----------------上面耗时短--------------------
//方法2
transform(s.begin(),s.end(),s.begin(),::tolower);//转小写
cout<<s<<endl;
transform(s.begin(),s.end(),s.begin(),::toupper);//转大写
9.string的查找
//字符串查找-----找到后返回首字母在字符串中的下标
string s("dog bird chicken bird cat");
// 1. 查找一个字符串
cout << s.find("chicken") << endl; // 结果是:9
// 2. 从字符串的末尾开始查找字符串,返回的还是首字母在字符串中的下标
cout << s.rfind("chicken") << endl; // 结果是:9
10.string的截取
string s1("0123456789");
string s2 = s1.substr(2,5);
// 结果:23456-----参数5表示:截取的字符串的长度
s.substr(strbegin,strlen)
11.string的排序
sort(s.begin(), s.end()); //从小到大排序
bool cmp(char a, char b) {
return a - '0' > b - '0';//从大到小排序
}
sort(s.begin(), s.end(),cmp); //从大到小排序
12.数值转字符串to_string
string temp = to_string(nums[low]);
二.set
STL的set用二叉树实现,集合中的每个元素只出现一次(参照数学中集合的互斥性),并且是排好序的(默认按键值升序排列)
1.set的构造
set<int> q; //以int型为例 默认按键值升序
set<int,greater<int>> p; //降序排列
2.set的大小
q.size(); //返回q中元素的个数
3.set的增删查
q.insert(x); //将x插入q中
q.erase(x); //删除q中的x元素,返回0或1,0表示set中不存在x
q.clear(); //清空q
q.empty(); //判断q是否为空,若是返回1,否则返回0
q.find(x); //在q中查找x,返回x的迭代器,若x不存在,则返回指向q尾部的迭代器即 q.end()
q.count(x) //判断容器中是否存在值为x的元素
q.lower_bound(x); //返回一个迭代器,指向第一个键值不小于x的元素
q.upper_bound(x); //返回一个迭代器,指向第一个键值大于x的元素
q.rend(); //返回第一个元素的的前一个元素迭代器
q.begin(); //返回指向q中第一个元素的迭代器
q.end(); //返回指向q最后一个元素下一个位置的迭代器
q.rbegin(); //返回最后一个元素
三.map
1.map的定义
map<string, int> cnt; //普通map
map<int, vector<string>> ans; //可以当数组的数组用
2.map的查找和赋值
if(cnt.find(pstrs) == cnt.end()) {
cnt[pstrs] = cnt.size(); //结合第二个map,新的字符串,新开辟空间
}
cnt.find(pstrs) == cnt.end() //查看某元素是否存在,查不到就返回1
3.访问map键
ans[cnt[pstrs]].push_back(str); //利用键访问对应的值(vector数组)
4.遍历map
//方法1:
for(const auto& pair : ans) {
result.push_back(pair.second);
}
//方法2:
map<string,int>::iterator it;
for(it=m.begin();it!=m.end();it++){
cout<<"键="<<it->first<<" 值="<<it->second<<endl;
}
//方法3:
for(auto i=m.begin();i!=m.end();i++){
cout<<"键="<<i->first<<" 值="<<i->second<<endl;
}
4.map大小
cnt.size()