考前之《常用STL的常用用法》2024.6.15更新中

一.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()

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值