C++ Primer(第5版) 练习 16.4
练习 16.4 编写行为类似标准库find算法的模板。函数需要两个模板类型参数,一个表示函数的迭代器参数,另一个表示值的类型。使用你的函数在一个vector<int>和一个list<string>中查找给定值。
环境:Linux Ubuntu(云服务器)
工具:vim
解释
/*************************************************************************
> File Name: ex16.4.cpp
> Author:
> Mail:
> Created Time: Tue 30 Jul 2024 08:30:42 AM CST
************************************************************************/
#include<iostream>
#include<string>
#include<vector>
#include<list>
using namespace std;
template <typename I, typename T>
I find(I b, I e, const T &v){
for(; b != e && *b != v; b++);
return b;
}
int main(){
vector<int> num = {1, 2, 3};
list<string> str = {"zoo", "cat", "dog"};
auto iter1 = find(num.begin(), num.end(), 2);
if(iter1 == num.end()){
cout<<"No match!"<<endl;
}
else{
cout<<"Positon: "<<iter1 - num.begin()<<endl;
}
auto iter2 = find(str.begin(), str.end(), "fish");
if(iter2 == str.end()){
cout<<"No match!"<<endl;
}
else{
cout<<"Found!"<<endl;
}
return 0;
}