gpt4 book ai didi

C++将一堆值与给定值进行比较

转载 作者:太空狗 更新时间:2023-10-29 19:45:10 24 4
gpt4 key购买 nike

我需要将一个给定值与检索到的值进行比较。我在代码中多次执行此操作。我对它的外观不满意,我正在寻找某种 util 函数。有人写过吗?

我要比较的值的数量在编译时是已知的。

更新:我想摆脱容器,因为我知道我想要与之比较的确切数量的值(通常不超过 3)。而且每次都往容器里放东西也不是那么方便。
我也不喜欢 if,因为它不像“找到”那样明显。

#include <algorithm>
#include <string>
#include <vector>

std::string getValue1()
{
return "test";
}

std::string getValue2()
{
return "the";
}

std::string getValue3()
{
return "world";
}

int main()
{
const std::string value = "the";

// simple if
if ( value == getValue1() ||
value == getValue2() ||
value == getValue3() )
return 1;

// using collections like vector, set
std::vector<std::string> values;
values.push_back( getValue1() );
values.push_back( getValue2() );
values.push_back( getValue3() );
if ( values.end() != std::find( values.begin(), values.end(), value ) )
return 1;

// third option I'd use instead
//

return 0;
}

最佳答案

如果您要查找的值可与运算符<(如整数、 float 和 std::strings)进行比较,那么使用 std::set 将值放在那里然后检查 set.find(值)==​​ set.end()。这是因为该集合将以特定顺序存储值,以便更快地查找。使用哈希表会更快。但是,对于少于 50 个左右的值,您可能不会注意到任何差异 :) 所以我的经验法则是:

  • 少于 5 项:如果有多个 ||

  • 5个以上:放入集合或哈希表

关于C++将一堆值与给定值进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/639496/

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