gpt4 book ai didi

c++ - 整数列表与 C++ 中给定整数的有效比较

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:21:13 26 4
gpt4 key购买 nike

在 C++ 中是否有一种有效/优雅的方法来比较一个整数列表和一个给定的整数。假设我有四个数字:P、Q、R、S,我需要将它们与给定的 int T 进行比较以获得不同的情况。

if (P == T && Q != T && R != T && S != T) case('P');
else if (P != T && Q == T && R != T && S != T) case('Q');
else if (P != T && Q != T && R == T && S != T) case('R');
else if (P != T && Q != T && R != T && S == T) case('S');

同样,我将有 6 个配对案例:PQ、QR、PR ...、4 个三联案例和 1 个四联案例。如您所见,有很多明确的比较!有没有一种优雅的方法可以使用 STL 容器来做到这一点?

我需要以下情况之一作为我的输出:“P”、“Q”、..、“PQ”、“RS”、..“PQR”、“PQS”...“PQRS”。我计划做一个 switch-case,因为所有这些组合都会调用不同的代码。

最佳答案

使用以 bool 元组为键的查找映射:

std::map<std::tuple<bool,bool,bool,bool>,value> map;

查找值就是这样简单的事情:

map.find({T==P,T==Q,T==R,T==S});

(将其包装在一个查找函数中,当然可以使其更容易)。

map 的值(value)将取决于您的实际需要。它可以是字符串、数值,甚至是找到 key 时要执行的 std::function (lambda)。

或者,您也可以使用 unordered_map,但是您需要自己提供一个散列函数,因为 STL 没有默认的元组散列函数。

关于c++ - 整数列表与 C++ 中给定整数的有效比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44514288/

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