STL大全 · 第二波
第一波我们介绍了vector,set,string,和 sort,第二波为学习STL的进阶版,喜欢记得 三连 哦!

find:
查找算法,时间复杂度为 O(n)
普通数组用法:
find(a+1,a+1+n,x);
a 为数组名字,n为寻找的长度,x为需要查找的数,返回值为x在这个数组第一次出现的位置,如果没有,则返回-1
string用法:
string::size_type position;
position = s.find("x");
if (position != s.npos)
{
    //找到了
}
else
{
    //没找到
}
s为字符串名字,x为需要查找的字符串,position就是答案了
还可以查找在字符串中,最后一次出现指定字符串的位置,将position改为:
position = s.find_last_of("x");
还可以查找在字符串中,指定字符串出现的所有位置:
position=0;
while((position=s.find("x",position))!=string::npos)
{
    cout<<position<<endl;
    position++;
}

vector,insert等容器用法:
find(a.begin(),a.end(),x);
a为容器名字,x为要查找的东西,可以是字符串或浮点数等等,但必须与容器的变量类型相同
如果想在第2个元素开始查找,最后一个元素不计入查找,只需将语句改为:
find(a.begin()+1,a.end()-1,x);
其他的以此类推

lower_bound:
查找不小于第三个参数的第一个元素
lower_bound(a.begin(),a.end(),x);
lower_bound(查找数组+开始查找的元素下标,查找数组+结束查找的元素下标+1,需要找不小于这个元素的实际数字)
如果是数组的话,去掉 .begin() 和 .end() 即可

upper_bound:
查找大于第三个参数的第一个元素
upper_bound(a.begin(),a.end(),x);
upper_bound(查找数组+开始查找的元素下标,查找数组+结束查找的元素下标+1,需要找大于这个元素的实际数字)

unique:
去重
unique函数的去重方法就是不断将后面的元素代替前面已有元素
vector<int>::iterator new_end;
 
new_end = unique(a.begin(),a.end());
a.erase(new_end,a.end());
因为unique函数的返回值是无用的元素的第一个下标,前面的元素就是已经排序好且不重复的答案,利用erase函数,删除后面的无用元素,剩下的就是答案,也可以理解为开头与unique函数返回值-1之间的元素就是答案

喜欢记得 赞 + 收藏 哦!
有问题欢迎在评论区讨论哦!
#学习路径#

注意!此信息未认证,请谨慎判断信息的真实性!

全部评论
空

相关内容推荐

头像
点赞 评论 收藏
转发
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像 头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
5 12 评论
分享

全站热榜

正在热议