key_struct kStruct;
kStruct.x = 2;
std::find_if(m_cueCommands.begin(), m_cueCommands.end(), find_MyInt(kStruct));
struct key_struct
{
int x;
string y;
string z;
}
struct find_myInt : std::unary_function<key_struct, bool>
{
int x;
find_myInt(key_struct kStruct):myInt(kStruct.x){}
bool operator()(key_struct const& m) const
{
return m.x == myInt;
}
};
我很确定我有这个有点搞砸了,但是,我认为它是适度接近。我想要做的是将key_struct作为我地图中的关键字。我希望能够搜索密钥并返回设置key_struct的信息。如果我将key_struct设置为x = 2,那么我只想返回int x等于2的地方。如果我设置x = 2和y =“testString”的位置,那么我只想返回其中x = 2和y =“testString”。C++ STD :: find_if使用结构谓词
我相信我的方法很接近,但我认为我错过了一些东西。想法?
这适用于'binary_search'或'lower_bound',但不适用于执行线性搜索的'std :: find_if'。 – 2011-04-19 13:44:53
'find_if'需要一个等式关系,而不是一个严格的弱排序。 – aschepler 2011-04-19 13:46:29
请注意,OP说:“我想要做的是将key_struct作为我地图中的关键字。” 'map'需要严格的弱排序。 – 2011-04-19 13:47:48