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

如何简化std::map初始化 让vector<int>在初始化语句中仅出现一次

解决方案

方法1:单语句内实现(C++11及以上支持)

可以通过decltype关键字提取map的内置类型别名mapped_type来避免重复写vector<int>,整条初始化语句中vector<int>仅出现1次:

std::map<std::string, std::vector<int>> sviMap {
    {"Leo", decltype(sviMap)::mapped_type(50, 101)},
    {"Brad", decltype(sviMap)::mapped_type(50, 201)}
};

原理说明:decltype(sviMap)会自动推导得到当前map的完整类型,所有std::map实例都内置了mapped_type别名,对应键值对中值的类型,也就是你这里的vector<int>,直接用该别名构造值对象即可,不需要重复声明完整vector类型。

方法2:提前定义类型别名(可读性更高)

如果允许在初始化语句前提前定义公共类型别名,代码会更简洁易维护,vector<int>全局仅需要定义一次:

using IntVec = std::vector<int>;
std::map<std::string, IntVec> sviMap {
    {"Leo", IntVec(50, 101)},
    {"Brad", IntVec(50, 201)}
};

后续如果需要修改值的容器类型,只需要修改using声明的那一行即可,不需要批量替换所有vector声明。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:39:00