统计查找
count(区间查找)
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<functional> using namespace std; int main() { vector<int> m = { 1, 1, 1, 1,1 ,2, 4 }; auto it7 = count(m.begin(), m.end(), 1); //统计在vector 容器中1出现的次数 cout << it7 << endl << endl; return 0; }
count_if(条件查找)
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<functional> using namespace std; int main() { vector<int> m = { 1, 1, 1, 1,1 ,2, 4 }; auto it8 = count_if(m.begin(), m.end(), [](int a) {return a > 1; }); //统计大于1的次数 cout << it8 << endl; return 0; }
equal(判断是否相等)
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<functional> #include<iomanip> //流 using namespace std; int main() { int arr1[] = { 1, 2 }; int arr2[] = { 1, 2 }; cout << boolalpha << equal(arr1, arr1 + 2, arr2, arr2 + 2) << endl; //用boolalpha的话, 要使用iomanip头文件 ,打印结果是true或者false // return 0; }
有序查找
binary_search(二分查找)
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<functional> #include<iomanip> //流 using namespace std; int main() { vector<int> mm = { 1, 2, 4 }; cout << boolalpha << binary_search(mm.begin(), mm.end(), 3); return 0; }
upper_bound(查找第一个大于查找的值)
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<functional> #include<iomanip> //流 using namespace std; int main() { vector<int> mm = { 1, 2, 3, 4 }; //第一个大于2的数 cout << *upper_bound(mm.begin(), mm.end(), 2); return 0; }
lower_bound (小于查找值)
方法跟上面一样的
equal_range(区间比较,大于等于)
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<functional> #include<iomanip> //流 using namespace std; int main() { vector<int> h = { 3, 8, 9, 0, 4, 3 , 4, 10, 100, 6}; //大于等于 //first:等于值, second:大于值 cout << *equal_range(h.begin(), h.end(), 6).first<< endl; cout << *equal_range(h.begin(), h.end(), 8).second << endl; return 0; }
注意:以上查找算法应该要做是否能够查找的判定,不能够直接打印,我这里为了方便,省略了这一步