基本查找
find(区间查找)
#include<iostream> #include<string> #include<vector> using namespace std; int main() { int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; vector<int> date; date.assign(arr, arr + 10); //assign()函数,为容器赋初值 //将arr, arr + 10 区间的值赋给date auto it = find(date.begin(), date.end(), 3); //find函数返回的类型是迭代器,这里使用auto推断比较方便 //如果找到,返回这个数据所在的位置。如果找不到,那么返回这个区间末尾的位置 if (it != date.end()) { cout << *it << endl; } system("pause"); return 0; }
find_if(条件查找)
#include<iostream> #include<string> #include<vector> using namespace std; int main() { int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; vector<int> date; date.assign(arr, arr + 10); //assign()函数,为容器赋初值 //将arr, arr + 10 区间的值赋给date auto it = find_if(date.begin(), date.end(), [](int m) {return m > 3; }); //这里使用lambda表达式作为find_if的条件。当然你也可以通过仿函数 cout << *it << endl; //打印出第一个大于3的数 system("pause"); return 0; }
find_first_of(查找区间第一次出现的值)
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<functional> using namespace std; int main() { int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; vector<int> date; auto it3 = find_first_of(date.begin(), date.end(), temp, temp + 3); //在date这个容器里,寻 cout << *it3 << endl; return 0;
adjacent_find(查找第一次重复的值)
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<functional> using namespace std; int main() { vector<int> data = { 0, 1, 2, 3, 3, 6, 6 }; auto it5 = adjacent_find(data.begin(), data.end()); //返回第一个重复元素的地址 cout << *it5 << endl; return 0;
search(子序列查找)
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<functional> using namespace std; int main() { int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; vector<int> date; date.assign(arr, arr + 10); //assign()函数,为容器赋初值 //将arr, arr + 10 区间的值赋给date int arr1[7] = { 0 ,1 , 2, 3 ,4, 5, 6 }; int arr2[4] = { 0, 1, 2, 3 }; auto it4 = search(arr1, arr1 + 7, arr2, arr2 + 4); //找arr1中是否有arr2的子串 cout << *it4 << endl; return 0; }
search_n(子序列查找出现的次数)
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<functional> using namespace std; int main() { vector<int> data = { 0, 1, 2, 3, 3, 6, 6 }; auto it6 = search_n(data.begin(), data.end(), 2, 3); //3出现2次的地方的迭代器 cout << *it6 << endl; return 0; }