【提高效率】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;
}
相关推荐
oioihoii12 分钟前
C++网络编程:从Socket混乱到优雅Reactor的蜕变之路
开发语言·网络·c++
笨鸟要努力32 分钟前
Qt C++ windows 设置系统时间
c++·windows·qt
神仙别闹1 小时前
基于C++实现(控制台)应用递推法完成经典型算法的应用
开发语言·c++·算法
AA陈超4 小时前
Lyra学习004:GameFeatureData分析
c++·笔记·学习·ue5·虚幻引擎
xlq223224 小时前
22.多态(下)
开发语言·c++·算法
不会c嘎嘎5 小时前
【数据结构】AVL树详解:从原理到C++实现
数据结构·c++
AKDreamer_HeXY6 小时前
ABC434E 题解
c++·算法·图论·atcoder
罗湖老棍子6 小时前
完全背包 vs 多重背包的优化逻辑
c++·算法·动态规划·背包
potato_may6 小时前
C++ 发展简史与核心语法入门
开发语言·c++·算法
爱装代码的小瓶子6 小时前
【cpp知识铺子】map和set的前身-二叉搜索树
c++·算法