我想知道是否有办法使用stl :: find_if来搜索用户输入的值
我不知道在不使用任何不良约定(全局变量)或添加大量扩展代码的情况下这样做.
例如,如果用户输入的int为10,那么我想搜索int的向量
iterator = find_if(begin,end,pred) //but how does pred know the user inputted value?
Run Code Online (Sandbox Code Playgroud)
你可以使用equal_to:
find_if(a.begin(), a.end(), bind2nd(equal_to<int>(), your_value));
Run Code Online (Sandbox Code Playgroud)
的pred必须是具有重载()算子的类型的实例,因此它可以被称为像的功能.
struct MyPred
{
int x;
bool operator()(int i)
{
return (i == x);
}
};
Run Code Online (Sandbox Code Playgroud)
(struct在这里使用简洁)
std::vector<int> v;
// fill v with ints
MyPred pred;
pred.x = 5;
std::vector<int>::iterator f
= std::find_if(v.begin(),
v.end(),
pred);
Run Code Online (Sandbox Code Playgroud)
编写这样的自定义类(带有"加载"代码!)至少可以说很麻烦,但是当添加lambda语法时,C++ 0x会有很多改进.
| 归档时间: |
|
| 查看次数: |
2931 次 |
| 最近记录: |