赞
踩
头文件为<algorithm>
binary_search()用来查找目标数组中是否存在这个数
binary_search(起始地址,结束地址,要查找的数)
微软解释algorithm函数详细了解: 函数https://learn.microsoft.com/zh-cn/cpp/standard-library/algorithm-functions?view=msvc-170#binary_searchbinary_search只能对已排好序(只能是升序)的数组进行搜索,返回true或false,
- #include <iostream>
- #include <algorithm>
- using namespace std;
-
- int main()
- {
- int a1[8] = { 2,56,21,45,17,5,77,9 };
- sort(a1, a1 + 8, less<int>()); //按升序排序
-
- for (int i = 0; i < 8; i++) cout << a1[i] << endl ;
- bool flag = binary_search(a1, a1 + 8, 20); //binary_search必须用于升序排好的数组才行。
- bool flag2 = binary_search(a1, a1 + 8, 45);
- cout <<flag<<endl;
- cout << flag2 << endl;
- return 0;
- }
-
头文件为<algorithm>
lower_bound()用来找到>=目标数的地址
lower_bound(起始地址,结束地址,要查找的数)
lower_bound函数只能对已排好序(必须是升序)的数组进行查找;
且返回的是第一个>=目标数的地址
若没找到,返回的是最后一个元素的地址+该数组类型的字节,即所定义的数组大小
- #include <iostream>
- #include <algorithm>
- using namespace std;
-
- int main()
- {
- int a1[8] = { 2,56,21,45,17,5,77,9 };
- sort(a1, a1 + 8, less<int>()); //按升序排序
-
- for (int i = 0; i < 8; i++) cout << a1[i] << endl ;
- //lower_bound函数返回容器中第一个值>=目标元素的位置
- int* p = lower_bound(a1, a1 + 8, 45); //lower_bound函数只能在已排好序(升序)的数组查找
- int* q = lower_bound(a1, a1 + 8, 100); //lower_bound函数若找到返回的是地址。
-
-
- cout <<"45的地址:"<<p - a1 << endl; //返回下标
- cout << "100的地址:"<<q - a1 << endl; //若没找到,返回的是最后一个下标加1,即7+1=8
-
-
- return 0;
- }
-
头文件为<algorithm>
upper_bound()用来找到>目标数的地址
upper_bound(起始地址,结束地址,要查找的数)
upper_bound函数只能对已排好序(必须是升序)的数组进行查找;
且返回的是第一个>目标数的地址
若没找到,返回的是最后一个元素的地址+该数组类型的字节,即所定义的数组大小
- #include <iostream>
- #include <algorithm>
- using namespace std;
-
- int main()
- {
- int a1[8] = { 2,56,21,45,17,5,77,9 };
- sort(a1, a1 + 8, less<int>()); //按升序排序
-
- for (int i = 0; i < 8; i++) cout << a1[i] << endl ;
- //upper_bound函数返回容器中第一个值>目标元素的位置
- int* p = upper_bound(a1, a1 + 8, 45); //upper_bound函数只能在已排好序(升序)的数组查找
- int* q = upper_bound(a1, a1 + 8, 100); //upper_bound函数若找到返回的是地址。
-
-
- cout <<"比45大的第一个数的地址:"<<p - a1 << endl; //返回下标
- cout << "比100大的地址:"<<q - a1 << endl; //若没找到,返回的是最后一个下标加1,即7+1=8
-
-
- return 0;
- }
-
有说头文件为<algorithm>,但在vs的c++11标准中,单用<iostream>也行
find()函数用来找到目标数的地址
find(起始地址,结束地址,要查找的数)
find函数对不排序的数组同样适用
若找到,返回的是物理地址,所以要输出下标时需要减去首地址。
若没找到,返回的是最后一个元素的地址+该数组类型的字节,即所定义的数组大小
- #include <iostream>
- #include <algorithm>
- using namespace std;
-
- int main()
- {
- int a1[8] = { 2,56,21,45,17,5,77,9 };
- sort(a1, a1 + 8, less<int>()); //按升序排序
-
- for (int i = 0; i < 8; i++) cout << a1[i] << endl ;
- int* p = find(a1, a1 + 8, 21); //find函数若找到返回的是地址。
- int* q = find(a1, a1 + 8, 100);
-
-
- cout <<"21的地址:"<<p - a1 << endl; //返回下标
- cout << "100的地址:"<<q - a1 << endl; //若没找到,返回的是最后一个下标加1,即7+1=8
-
- int a2[8] = { 2,56,21,45,17,5,77,9 }; //将a2始终乱序
- int* p1 = find(a2, a2 + 8, 17); //find函数若找到返回的是地址。
- int* q1 = find(a2, a2 + 8, 10);
-
- for (int i = 0; i < 8; i++) cout << a2[i] << endl;
- cout <<"17的地址:"<< p1 - a2 << endl; //返回下标
- cout << "10的地址:" << q1 - a2 << endl; //若没找到,返回的是最后一个下标加1,即7+1=8
- return 0;
- }
-
头文件为<algorithm>
find_if()用来找到符合描述的数的地址
find_if(起始地址,结束地址,自建函数名(所描述的谓词))
谓词是一个接受一个元素作为参数并返回一个布尔值的函数或函数对象。
find_if函数对不排序的数组同样适用
若找到,返回的是物理地址,所以要输出下标时需要减去首地址。
若没找到,返回的是最后一个元素的地址+该数组类型的字节,即所定义的数组大小
- #include <iostream>
- #include <algorithm>
- using namespace std;
-
- bool mykey(int a)
- {
- return a > 44 && a < 46; //在本代码中,即查找45
- }
-
- bool mykey2(int a)
- {
- return a > 100; //在本代码中,即查找45
- }
- int main()
- {
- int a1[8] = { 2,56,21,45,17,5,77,9 };
- sort(a1, a1 + 8, less<int>()); //按升序排序
-
- for (int i = 0; i < 8; i++) cout << a1[i] << endl ;
- //find_if函数返回容器中第一个符合"第三个参数函数"(即谓词)所描述的位置
- int* p = find_if(a1, a1 + 8, mykey);
- int* p1 = find_if(a1, a1 + 8, mykey2);
- cout <<"符合第一个描述的地址:"<<p - a1 << endl; //返回下标
- cout << "符合第2个描述的地址:" << p1 - a1 << endl;
- cout << endl;
- //find_if函数也可以对未排序的数组查找
- int a2[8] = { 2,56,21,45,17,5,77,9 };
- for (int i = 0; i < 8; i++) cout << a2[i] << endl;
- int* q = find_if(a2, a2 + 8, mykey);
- int* q1 = find_if(a2, a2 + 8, mykey2);
- cout << "符合第一个描述的地址:" << q - a2 << endl; //返回下标
- cout << "符合第2个描述的地址:" << q1 - a2 << endl;
- return 0;
- }
-
头文件为<algorithm>
count()用来数目标数的个数
count(起始地址,结束地址,要查找的数)
count函数对不排序的数组同样适用
count函数返回的是查到的个数
- #include <iostream>
- #include <algorithm>
- using namespace std;
-
-
- int main()
- {
- int a1[8] = { 2,56,21,45,77,5,77,9 };
- sort(a1, a1 + 8, less<int>()); //按升序排序
-
- for (int i = 0; i < 8; i++) cout << a1[i] << endl ;
-
- int a = count(a1, a1 + 8, 9);
- cout << a <<endl;
-
- int a2[8] = { 2,56,21,45,77,5,77,9 };
- for (int i = 0; i < 8; i++) cout << a2[i] << endl;
- int b = count(a2, a2 + 8, 77);
- cout << b << endl;
- return 0;
- }
-
头文件为<algorithm>
adjacent_find()用来找2个相邻且重复的数的第一个数的地址
adjacent_find(起始地址,结束地址)
adjacent_find函数与数组乱不乱序无关
adjacent_find函数返回的是第一个相邻重复元素的地址
- #include <iostream>
- #include <algorithm>
- using namespace std;
-
- int main()
- {
- int a1[8] = { 21,56,21,45,77,5,77,9 };
- sort(a1, a1 + 8, less<int>()); //按升序排序
-
- for (int i = 0; i < 8; i++) cout << a1[i] << endl ;
- //adjacent_find函数返回的是第一个相邻重复元素的地址
- int *p = adjacent_find(a1, a1 + 8);
- cout <<"第一个重复元素的地址:" << p-a1<<endl;
- //adjacent_find函数与数组乱不乱序无关
- int a2[8] = { 56,23,21,45,77,5,9,9 };
- for (int i = 0; i < 8; i++) cout << a2[i] << endl;
- int *b = adjacent_find(a2,a2 + 8);
- cout << "第一个重复元素的地址" << b-a2 << endl;
- return 0;
- }
-
c++自带的查找函数详解_C 语言_脚本之家这篇文章主要介绍了c++自带的查找函数,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下https://www.jb51.net/program/2976939ij.htm 蓝桥杯赛前准备 - 知乎1.可以使用的万能头文件#include<bits/stdc++.h>2.最后一定记住return 0; 3.蓝桥杯的最大栈空间为256MB,即最大可以开1e7(1*10^7)左右的数组空间 4.各类数据的范围1.int -2147483648~2147483647 //9位及以…https://zhuanlan.zhihu.com/p/489285845
c++的查找算法总结_查找特定的值c++语言-CSDN博客文章浏览阅读759次。如果找到相邻的一对元素满足条件,则返回指向第一个相邻元素的迭代器;算法函数用于在指定范围内查找相邻的两个元素,满足指定的条件。算法函数用于在有序范围内进行二分查找,判断指定的值是否存在。算法用于在有序范围内进行二分查找,判断指定的值是否存在。算法用于在指定范围内查找相邻的两个元素,满足指定的条件。算法函数用于计算指定值在指定范围内出现的次数。算法用于计算指定值在指定范围内出现的次数。内查找第一对相邻的元素,满足相等的条件。如果不存在指定值,则返回。返回等于指定值的元素个数。如果存在指定值,则返回。_查找特定的值c++语言https://blog.csdn.net/luosuss/article/details/134766064 C++中提供的一些关于查找元素的函数_c++数组查找某个元素-CSDN博客文章浏览阅读1k次。C++可用于查找的函数汇总_c++数组查找某个元素https://blog.csdn.net/CHNIM/article/details/132433273
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。