find函数
建议直接看最后的结论
题目描述
输入 n 个不超过 10^9 的单调不减的(就是后面的数字不小于前面的数字)非负整数,然后进行 m 次询问。对于每次询问,给出一个整数 q,要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出 -1 。
输入格式
第一行 2 个整数 n 和 m,表示数字个数和询问次数。
第二行 n 个整数,表示这些待查询的数字。
第三行 m 个整数,表示询问这些数字的编号,从 1 开始编号。
输出格式
输出一行,m 个整数,以空格隔开,表示答案。
样例 #1
样例输入 #1
11 3 |
样例输出 #1
1 2 -1 |
关于find函数的返回值问题
上面是今天算法实验的第一道题目,我开始时打算使用vector
类型来存储数据
在用迭代器遍历完之后,我想到了find
函数
find
函数只需要输入首尾迭代器以及需要查找的元素即可
但是,当所查容器中含有多个需要查找的元素时,会怎么样呢?
#include<iostream> |
示例的输出为:
0 1 11 |
显然,这是存在问题的
结论
后面我单独测试find时发现存在多个相同元素时,它会返回最后一个元素的迭代器,但是这个和上面第二个输出不符;当查找元素不在容器中时,会返回你输入的结束迭代器。
第二个输出的问题还是没有想到是为什么
另外,这个题不要这样写,复杂度太高了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AceNyanner's home!
评论