1.查找算法
find: 区间查找
find_first_of: 查找区间第一次出现
adjacent_find: 查找第一次重复的数
search: 子序列查找
search_n: 子序列查找出现次数
count: 区间统计
count_if: 条件统计
equal: 比较
有序查找:
binary_search: 二分查找
upper_bound: 查找最后一个大于查找的值
lower_bound: 大于等于查找的值
equal_range: 区间比较,必须是有序序列
void testSearch() { int array[10] = { 1,3,5,7,8,2,0,1,34,9 }; vector<int> vec; vec.assign(array, array + 10); //1.基本查找 auto result = find(vec.begin(), vec.end(), 1); if (result != vec.end()) { cout << *result << endl; } //2.条件查找 auto findIf = find_if(vec.begin(), vec.end(), [](int vec) { return vec > 7; }); if (findIf != vec.end()) { cout << *findIf << endl; } //3.范围查找 find_first_of int temp[] = { 9,5,1,3,2,4,6,8,0 }; auto findRange = find_first_of(vec.begin(), vec.end(), temp, temp + 9); cout << *findRange << endl; //4.找第一次重复的元素 vector<int> value = { 1,1,2,3,4,5,6,7,9,9 }; cout << *adjacent_find(value.begin(), value.end()) << endl; //找子串 int num[] = { 1,2,3 }; cout << *search(value.begin(), value.end()-1, num, num + 3) << endl; //找指定出现次数的元素(重复出现的,连续的) //查找连续4个2的位置 cout << *search_n(value.begin(), value.end(), 4, 2) << endl; //查找连续4个大于4个元素的的位置 cout << *search_n(value.begin(), value.end(), 4, 4, [](int i, int j) {return i > j; }) << endl; //统计次数 cout << count(value.begin(), value.end(), 2) << endl; //条件统计 cout << count_if(value.begin(), value.end(), [](int i, int j = 3) {return i > j; }) << endl; //比较 cout << equal(array, array + 10, vec.begin(), vec.end()) << endl; //二分查找 返回的是bool sort(vec.begin(), vec.end()); cout << binary_search(vec.begin(), vec.end(), 4) << endl; //大于 cout << *upper_bound(vec.begin(), vec.end(), 8) << endl; //小于等于 cout << *lower_bound(vec.begin(), vec.end(), 8) << endl; //equal_range: 返回值是一个pair : first:等于 second:大于 cout << *equal_range(vec.begin(), vec.end(), 8).first << endl; cout << *equal_range(vec.begin(), vec.end(), 8).second << endl; }