You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否简化向std::map中添加S_SWAP_TALK结构体的代码?

简化std::map填充代码的方案

当然可以简化,利用C++11及以上标准支持的聚合初始化特性,直接在赋值语句中构造S_SWAP_TALK对象,无需额外声明中间变量,完全符合你想要的m_mapSwapTalks[menuItemId] = ...形式:

情况1:设置pAwayTalk成员

使用列表初始化,未指定的成员会自动按结构体的默认规则初始化(即nullptr):

m_mapSwapTalks[menuItemId] = {nullptr, &sAwayTalk};

如果使用C++20及以上标准,还可以用指定初始化器,代码可读性更强:

m_mapSwapTalks[menuItemId] = {.pAwayTalk = &sAwayTalk};

情况2:设置pHomeTalk成员

同样用列表初始化:

m_mapSwapTalks[menuItemId] = {&sPTI, nullptr};

C++20+下的指定初始化版本:

m_mapSwapTalks[menuItemId] = {.pHomeTalk = &sPTI};

以上代码和你原来的逻辑完全一致:只给目标成员赋值,另一个指针成员保持默认的nullptr,同时省去了临时结构体变量的声明步骤。

内容的提问来源于stack exchange,提问作者Andrew Truckle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:12:06