【提高效率】C++使用map替代传统switch case

switch case示例

c 复制代码
enum class ENTestType
{
    first = 1,
    second,
    third,
    forth
};

class Test
{
public:
    void testFun(ENTestType type)
    {
        switch (type)
        {
        case ENTestType::first:
            std::cout << "first" << std::endl;
            break;
        case ENTestType::second:
            std::cout << "first" << std::endl;
            break;
        case ENTestType::third:
            std::cout << "third" << std::endl;
            break;
        case ENTestType::forth:
            std::cout << "forth" << std::endl;
            break;
        default:
            break;
        }
    }
};

int main()
{
    auto t = std::make_unique<Test>();
    t->testFun(ENTestType::first);
    return 0;
}

使用map替代switch:

cpp 复制代码
class Test
{
public:
    Test()
    {
        _testMap[ENTestType::first] = []{
            std::cout << "first" << std::endl;
        };
        _testMap[ENTestType::second] = []{
            std::cout << "second" << std::endl;
        };
        _testMap[ENTestType::third] = []{
            std::cout << "third" << std::endl;
        };
        _testMap[ENTestType::forth] = []{
            std::cout << "forth" << std::endl;
        };
    }
public:
    std::map<ENTestType, std::function<void()>> _testMap;
};

int main()
{
    auto t = std::make_unique<Test>();
    t->_testMap[ENTestType::first]();
    return 0;
}
相关推荐
oioihoii2 分钟前
现代C++:一场静默的革命,告别“C with Classes”
c语言·jvm·c++
普通网友35 分钟前
C++中的组合模式
开发语言·c++·算法
江公望40 分钟前
Qt QByteArray类型,10分钟讲清楚
开发语言·c++·qt
2501_941111461 小时前
C++中的组合模式变体
开发语言·c++·算法
普通网友1 小时前
单元测试在C++项目中的实践
开发语言·c++·算法
沐怡旸2 小时前
【穿越Effective C++】条款22:将成员变量声明为private——封装的边界与设计的自由
c++
普通网友5 小时前
高性能TCP服务器设计
开发语言·c++·算法
普通网友5 小时前
C++与硬件交互编程
开发语言·c++·算法
Elias不吃糖5 小时前
整合了c++里面常用的STL及其常用API
开发语言·c++·学习·stl
FLPGYH6 小时前
BMC 深度解析:服务器带外管理的核心技术架构与实践
linux·服务器·c++·驱动开发