C++使用MAP存储表格

楼主最近经常遇到需要调用表格的情况,故用此文章以做记录,方便之后直接Ctrl C + V

仅由一个参数控制的表格

lib_timing_related_constants_t get_timing_related_constants(const lib_wifi5_channel_bandwidth_t cbw)
{
    map<lib_wifi5_channel_bandwidth_t, lib_timing_related_constants_t> info =
    {
        //channel bw                nsd  nsp  nst  nsr  nseg
        {LIB_WIFI5_CBW_20MHZ,       {52,  4,  56,  28,  1}},
        {LIB_WIFI5_CBW_40MHZ,       {108, 6,  114, 58,  1}},
        {LIB_WIFI5_CBW_80MHZ,       {234, 8,  242, 122, 1}},
        {LIB_WIFI5_CBW_80_80MHZ,    {234, 8,  242, 122, 2}},
        {LIB_WIFI5_CBW_160MHZ,      {468, 16, 484, 250, 1}}
    };
    return info.at(cbw);
}

上述代码为由输入参数cbw控制的5个参数读取。

由多个参数控制的表格

lib_timing_related_constants_t get_timing_related_constants(const lib_wifi5_channel_bandwidth_t cbw)
{
    map<uint32, lib_timing_related_constants_t> info =
    {
        //channel bw, n                         nsd  nsp  nst  nsr  nseg
        {_key_bw(LIB_WIFI5_CBW_20MHZ, n),       {52,  4,  56,  28,  1}},
        {_key_bw(LIB_WIFI5_CBW_40MHZ, n),       {108, 6,  114, 58,  1}},
        {_key_bw(LIB_WIFI5_CBW_80MHZ, n),       {234, 8,  242, 122, 1}},
        {_key_bw(LIB_WIFI5_CBW_80_80MHZ,  n),   {234, 8,  242, 122, 2}},
        {_key_bw(LIB_WIFI5_CBW_160MHZ,  n),     {468, 16, 484, 250, 1}}
    };
    return info.at(_key_bw(cbw, n));
}

uint32 _key_bw(const lib_wifi5_channel_bandwidth_t cbw, const uint32 n)
{
    return static_cast<uint32>(cbw) + n;
}

上述代码为由输入参数cbw与n一起控制的5个参数读取,注意需要保证_key_bw()函数的计算在表格中具有唯一性。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值