关于STL 的那些事

今晚参加训练。。。树状数组的练习,傻乎乎的用STL做了一晚,虽然题没做出来,不过对STL的查找有了更深一层的理解。
关于STL。
输入输出
vector push_back pop_back
stack push pop
queue
push pop
头:front() 尾 back()
priority_queue
push pop
头 top 没有尾
List
push_back push_front pop_back pop_front 头:front begin 尾 back end 不过back是最后一个元素的迭代器 而end是最后一个元素的下一个迭代器 L.erase(迭代器) L.reverse() L.sort(cmp) 可自定义cmp,remove(键值),erase(迭代器)。
set 里面元素已经排序而且不接受重复元素
multiset 接受重复元素 insert插入 m.find(值)返回迭代器 remove(值)。
deque 双向队列(一般用deque而不用queue)双向输入 push_back push_front
string 的查找 Str.find(str,index) 返回index开始 第一次出现str的位置
删除排序后的重复字符。str.erase(unique(str.begin(),str.end()),str.end());

关于STL的查找
http://www.cnblogs.com/me115/p/4564709.html

查找有三种,即点线面:
点就是查找目标为单个元素;
线就是查找目标为区间;
面就是查找目标为集合;

查找点 find(迭代器头,迭代器尾,要找的元素)
find包含在 algorithm 的头文件
count(迭代器头,迭代器尾,要找的元素)数数
但是在map里面可以用 mp.count(下标的值)进行数下标。
lower_bound(迭代器头,迭代器尾,要找的元素)
返回第一个不小于给定元素的迭代器。
binary_search() 有序区间的二分查找
返回的是布尔类型
search() 查找子区间首次出现的位置
find()用来查找单个元素,search()则用来查找一个子区间;
示例:从myvector中查找出现子区间[20,30]的位置:

int needle1[] = {20,30};
it = std::search (myvector.begin(), myvector.end(), needle1, needle1+2);
if (it!=myvector.end())
std::cout << “needle1 found at position ” << (it-myvector.begin()) << ‘\n’;
一般容器查找 找不到的话都是最后一个迭代器 即==end(),栈和队列没有end()所以这样找无法确定是否找到了。
string 里面find查找 str.find(字符串) 找不到 返回 string::npos,
数组里面的查找 要得到下标的话请减去首地址 int pos=lower_bound(a,a+n,x)-a; 因为这里lower_bound 返回的是地址
既然是队列,也就只有入队、出队、判空、大小的操作,并不具备查找功能。队列不具备查找功能

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值