c++ - 多个 if-else 测试的更简单方法

标签 c++ algorithm c++11 if-statement

我有一个字符串,如果字符串值匹配给定的单词集(比如 ape、eat、sleep、mango......),我想执行 if 语句

我能做到:-

if(name=="ape" || name=="eat".............)

有没有更简单的方法来做到这一点?

我只想使用 if-else。

最佳答案

Decalare 一个单词数组,然后使用标准算法 std::findstd::any_of

例如

const char * words[] =
{
    "ape", "eat", "sleep", "mango"
}; 

if ( std::find( std::begin( words ), std::end( words ), name ) != std::end( words ) )
{
   //...
}

如果您要声明一个排序数组,那么您可以使用标准算法 std::binary_search

这是一个演示程序

#include <iostream>
#include <string>
#include <iterator>
#include <algorithm>

int main() 
{
    const char * words[] =
    {
        "eat", "ape", "mango", "sleep" 
    };

    std::string name( "mango" );

    if ( std::binary_search( std::begin( words ), std::end( words ), name ) )
    {
        std::cout << name << " is a correct name\n";
    }

    return 0;
}

它的输出是

mango is a correct name

或者将单词放在标准容器中,例如 std::set 并使用容器的 find 方法。

关于c++ - 多个 if-else 测试的更简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58287145/

相关文章:

c++ - gtest - 确保某个方法之前没有被调用,但可以在某个方法调用之后被调用

c++ - Qt QSpinbox 和 QPushButton 到 Arduino

c# - 真值表作为字典的键

c++ - std::vector 是否可以简单复制,为什么?

c++ - 如何在编译时查询一个类的所有基类?

c++ - 如何在 Windows XP 上为 Qt 4.7 正确构建 OpenCV 2.3.1?

c++ - 在进行添加时如何使用 C++ 模板避免临时对象?

java - 因果一致性与顺序一致性有何不同?

并发合并n个文件为一个的算法

c++ - 读取文件,尝试返回二维字符数组