我遇到的问题似乎比现在更容易。我认为它更多的是算法问题,而不是编码问题。
编辑: 想象一下,你有一个带有名字和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,测试它的真或假并不重要。
有什么想法吗?
如果有人能帮助我,我会很高兴
答案 0 :(得分:0)
我可以帮助您使用算法部分, 而不是检查所有16种可能性,只需为bool1,2,3,4分别检查4个条件,如果它们是真的则打印它们的信息。
这样,您只需使用4个if语句即可完成任务。
希望这可以回答您的问题。