gpt4 book ai didi

c++ - 如何仅使用一个键来使用 std::binary_search ?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:10 25 4
gpt4 key购买 nike

我有一些数据存储在排序的 vector 中。该 vector 按某个键排序。我知道 STL 有一个算法来检查一个元素是否在这个排序列表中。这意味着我可以这样写:

struct MyData { int key; OtherData data; };
struct MyComparator
{
bool operator()( const MyData & d1, const MyData & d2 ) const
{
return d1.key < d2.key;
}
};

bool isKeyInVector( int key, const std::vector<MyData> &v )
{
MyData thingToSearchFor;
thingToSearchFor.key = key;
return std::binary_search( v.begin(), v.end(), thingToSearchFor, MyComparator() );
}

但是我发现“thingToSearchFor”对象的构造不够优雅。有没有更好的办法?类似这样的东西?

struct MyComparator2
{
bool operator()( const MyData & d1, const MyData & d2 ) const
{
return d1.key < d2.key;
}
};

bool isKeyInVector2( int key, const std::vector<MyData> &v )
{
return std::binary_search( v.begin(), v.end(), key, MyComparator2() );
}

最佳答案

做:

struct MyComparator
{
bool operator()(int d1, const MyData & d2) const
{
return d1 < d2.key;
}

bool operator()(const MyData & d1, int d2) const
{
return d1.key < d2;
}
};

谓词的调用方式类似于pred(value, ...)pred(..., value),所以直接取值即可。

关于c++ - 如何仅使用一个键来使用 std::binary_search ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3474857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com