如何在c ++

时间:2018-02-14 06:37:24

标签: c++ algorithm checkbox filter

我遇到的问题似乎比现在更容易。我认为它更多的是算法问题,而不是编码问题。

编辑: 想象一下,你有一个带有名字和N个布尔参数的数据库,比如这个人是否是金发女郎,如果这个人喜欢棒球,如果有人有智能手机等等......

你怎么能打印喜欢棒球的人的名字并且是金发女郎,但是如果其他N个参数中的任何一个都是假的则无关紧要?如果不为每个(N ^ 2)-1的可能性编写测试,我怎么能这样做呢?

我创建了一个字典,它将字符串映射到一个带有4个布尔变量和一些字符串的结构。

我希望用户选择哪些布尔值对他们很重要,并且只返回他选择的所有变量的true信息。 类似于一个复选框,您可以使用它来过滤Excel中的列。

例如,如果用户选择变量1和2,我想知道是否有更好的方法来返回结果而不是测试16种可能性中的每一种,例如:

void filter(map<string, Mystruct> Mydictionary, bool bool1, bool bool2, bool bool3, bool bool4){
   if(bool1 == true && bool2 == true && bool3 == false && bool4==false){
     cout << Mydictionary.bool1Info << Mydictionary.bool2Info
   if(bool1 == true && bool2 == false && bool3 == false && bool4==false)
   ...

更重要的是,对我来说,测试用户选择的布尔值是唯一重要的,所以即使他没有选择boolean3,测试它的真或假并不重要。

有什么想法吗?

如果有人能帮助我,我会很高兴

1 个答案:

答案 0 :(得分:0)

我可以帮助您使用算法部分, 而不是检查所有16种可能性,只需为bool1,2,3,4分别检查4个条件,如果它们是真的则打印它们的信息。

这样,您只需使用4个if语句即可完成任务。

希望这可以回答您的问题。