初始化全局map

C++中类静态成员map初始化操作 前言 最近作者在项目中遇到一个问题,类静态成员map无法进行初始化,这个问题困扰了作者好多天,今天突然发现了解决此类问题的方法,就写下这篇博客,供大家学习交流,废话不多说了,直接贴代码了 自己写的一个测试类 //MapTest.h#pragma once #include using namespace std; typedef map IntMap; class MapTes 阅读详情

通常,初始化std::map的时候是直接把初始值的pair依次insert到map里的。

……

typedef pair <const int, int> cInt2Int;

map <int, int> m1;

 

// value_type can be used to pass the correct type

// explicitly to avoid implicit type conversion

m1.insert ( map <int, int> :: value_type ( 1, 10 ) ); //可以这样

 // Compare other ways to insert objects into a map

m1.insert ( cInt2Int ( 2, 20 ) ); //还可以这样

m1[ 3 ] = 30; //这当然也可以,map重载了[]符的

……

可现在,我想使用一个const static map,也就是在定义的时候就需要把它初始化。
因为是const类型,直接insert肯定不行的了。

 其实,map的构造函数是支持用一个区间 [start, end) 来初始化,我们也经常用这种方法来构造其他std容器,比如用一个数组作为区间去初始化一个vector:

int array[] = {1, 2, 3, 4};  std::vector<int> int_vec(array, array + 4);

 

那么,应该用什么类型的数组来初始化map呢?

还是看代码吧 

/////////////////==== 数据标识映射====///////////////////

const std::map<BYTE, BYTE>::value_type init_value[] =

{

std::map<BYTE, BYTE>::value_type( 0, 0),

std::map<BYTE, BYTE>::value_type( 1, 1),

std::map<BYTE, BYTE>::value_type( 2, 2),

std::map<BYTE, BYTE>::value_type( 4, 3),

std::map<BYTE, BYTE>::value_type( 8, 4),

std::map<BYTE, BYTE>::value_type( 16, 5),

std::map<BYTE, BYTE>::value_type( 32, 6),

std::map<BYTE, BYTE>::value_type( 64, 7),

std::map<BYTE, BYTE>::value_type(128, 8)

};

const static std::map<BYTE, BYTE> m_mapPn(init_value, init_value+9); //信息点表

 

对,就是这样! 
 
参见:http://msdn.microsoft.com/en-us/library/y6ec19ye(v=vs.80).aspx
Keil全局变量初始化问题解析与解决方案 在嵌入式系统开发中,全局变量初始化是确保程序正确运行的基础环节。其核心原理在于编译器生成的初始化表(Initialization Table)机制,该表包含了所有全局变量的初始值信息。链接器会将这些初始化数据合并处理,而启动代码则在main()执行前完成初始化工作。这一过程在Keil开发环境中尤为关键,因为错误的链接顺序可能导致初始化表被截断,进而引发变量未初始化的问题。通过分析map文件和调整项目配置,开发者可以有效解决这类典型问题。本文结合Keil工具链特性,深入探讨了C166/C251架构下的初始化机 阅读详情

相关推荐

Centos7安装NVIDIA驱动并在docker容器中使用GPU

Centos7安装NVIDIA驱动并在docker容器中使用GPU

运维giao的博客 2084

C++map的初始化

map的初始化有两种方式: 1、直接赋值        map[key]=value; 2、用insert添加pair类型的元素 #include #include #include using namespace::std; int main() { //直接赋值法 map m1; m1[string("abc")] = 1; m1[string("defg")] = 2;

zj15939317693的博客 5万+

瑞芯微RK3576开发实战:固件烧录与内核启动的典型问题解析

本文详细解析了瑞芯微RK3576开发板在固件烧录与内核启动过程中遇到的典型问题及解决方案。从开发工具版本检查、DDR配置调整到内核启动异常的设备树适配和电源管理问题,提供了系统性的调试方法和实用技巧,帮助开发者高效解决RK3576开发中的常见挑战。

weixin_33700350的博客 455

C++ map相关知识

C++ map的描述 map是STL的一个关联容器,它提供一对一HashTable 第一个可以称为关键字,每个关键字只能在map中出现一次 第二个可能称为该关键字的值 容器内,key-value对基于key值有序排列,组织规则按照红黑树结构进行组织(非严格意义上的平衡二叉树) map的构造函数 构造函数原型如下: map<key_type,value_type> m1 其中,在哈希表...

luguoqing1996的博客 2414

Unity游戏Mono注入实战:从反编译到功能扩展

本文详细介绍了Unity游戏Mono注入的完整实战流程,从使用dnSpy反编译游戏核心逻辑,到编写自定义C#功能DLL,再到利用SharpMonoInjector进行动态注入。文章深入讲解了如何通过Harmony库拦截修改游戏方法,并介绍了使用MelonLoader框架和UnityExplorer进行高级模组开发与调试,最终通过一个游戏对象透视(ESP)案例演示了功能扩展的实现。

weixin_29018335的博客 460

C语言实现贪吃蛇小游戏!(超简单详细)详细思路+源码分享

我们的今天的目标就是:用C语言来实现一个贪吃蛇项目,也不用太复杂,初学者能看懂就行!

致力于C语言C++知识分享! 1万+

C++之STL整理(3)之map 用法(创建、赋值、方法)整理

map 用法(创建、赋值、方法)增删查改、键值对、pair

ULTRAmanTAROACE的博客 7万+

避坑指南:Unity新版InputSystem在移动端的5个常见问题及解决方案

本文针对Unity新版InputSystem在移动端开发中的常见问题,提供了5个关键解决方案,包括虚拟摇杆灵敏度调节、多点触控冲突处理、按钮反馈延迟优化、手势识别与陀螺仪数据融合以及Android/iOS平台差异处理。这些实战经验帮助开发者高效解决触控适配难题,提升移动游戏体验。

soda5的博客 405

C++(17):map的初始化

关于C++中关联容器map的初始化/赋值有好几种方式 1.直接赋值法 map<string, int> m1; m1[string("abc")] = 1; m1["def"] = 2; 2.用insert添加 map<string, int> m2; m2.insert({ "abc", 1 }); //使...

Leo的博客 15万+

ensp VRRP+MSTP综合性实验

网络结构拓扑图 实验要求 要求: 1、全网互通,IP地址任意规划,路径最优,无环路。 2、AR1上面有一个loopback口,ip地址为1.1.1.1/24, 要求所有电脑能访问。 3、vlan10通过LSW1访问1.1.1.1,当LSW1出现问题即使 g0/0/1故障亦能通过lsw2访问。 vlan30通过LSW2访问1.1.1.1,当LSW2出现问题即使 g0/0/1故障亦能通过lsw1访问。 4、LSW1为vlan10的主根,vlan30的备根。 LSW2为vlan30的主根,vlan1

qq_45631844的博客 1万+

OpenTK简介

OpenTK 因其强大的功能、跨平台特性和灵活性,适用于多种需要图形和计算能力的应用场景,为开发者提供了丰富的可能性和创作空间。

仰望星空的博客 1980

go 全局切片声明初始化_如何在Go中制作全局常量贴图和切片

go 全局切片声明初始化 在大多数情况下,Go开发人员非常擅长使用常量进行全局配置,而不是全局变量。 但是,当我们需要全局常量切片或映射时,就会出现问题。 go编译器不允许将这些更复杂的类型设置为常量。 实现这一点后,许多开发人员决定使用危险的全局变量。 在本文中,我们将探索一个更好的选择。 全局和常量简介 package foo// this is a global constant c...

编程故事的地方 3143

TPAMI 2024 | MO-MIX:基于深度强化学习的多目标多智能体协同决策

深度强化学习(RL)已被广泛应用于解决复杂的决策问题。在许多现实世界的场景中,任务通常有多个相互冲突的目标,并且可能需要多个智能体进行合作,这些是多目标多智能体决策问题。然而,在这个交叉领域的研究工作还相对较少。现有的方法仅限于单独的领域,并且只能处理具有单一目标的多智能体决策,或者具有单一智能体的多目标决策。在本文中,我们提出了MO-MIX来解决多目标多智能体强化学习(MOMARL)问题。我们的方法基于集中训练与分散执行(CTDE)框架。

小白学视觉 1131

leecode 1MAP做法莫名报错(已解决)全局变量初始化

让我玩二、

qq_42569994的博客 345

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Map和List静态初始化

1.初始化Map public final static Map<String, String> ServerIPMap = new HashMap<String, String>() { { put("redis", "127.0.0.1"); put("solr", "127.0.0.1"); ...

zmj199536的博客 1349

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

未经初始化的map<string,int>中int的value为0

无论将map<string,int>mp作为全局变量还是局部变量,未初始化的int对应value为零,且这一规则只对int对应的value生效。在初学map时突发奇想,未初始化的map和数组是否一样,即作为全局变量时未初始化值为0,局部变量未初始化时为随机值。纯新手,欢迎批评指正~

baoliushili的博客 235

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

map作为全局变量赋值_程序猿学GO:Map

五:Map5.1 Map介绍 Map 是 Go 中的内置类型,它将键与值绑定到一起。可以通过键获取相应的值。 可以通过将键和值的类型传递给内置函数 make 来创建一个 map。语法为:make(map[KeyType]ValueType)。(译者注:map 的类型表示为 map[KeyType]ValueType)例如:personSalary := make(map[string]int) 上...

weixin_39847437的博客 1073

SpringBoot项目启动初始化操作

SpringBoot项目启动初始化操作[原博客地址:](https://blog.youkuaiyun.com/shahuhubao/article/details/80280596) 原博客地址: 最近项目中有个需求,需要在spring boot项目启动的时候查询数据库,存放到全局map中,查阅资料知道spring boot有初始化类,可以在Service、Mapper注入之后执行,简单方便,写博客记录! ...

weixin_39623726的博客 828

springboot 初始化一个常量map_基于STM32分析栈、堆、全局区、常量区、代码区、RAM、ROM...

在一个STM32程序代码中,从内存高地址到内存低地址,依次分布着栈区、堆区、全局区(静态区)、常量区、代码区,其中全局区中高地址分布着.bss段,低地址分布着.data段。总的分布如下所示:内存高地址栈区堆区.bss段.data段常量区内存低地址代码区一、栈区(stack)临时创建的局部变量存放在栈区。函数调用时,其入口参数存放在栈区。函数返回时,其返回值存放在栈区。const定义的局部...

weixin_39616003的博客 660

Three.js 导入FBX模型 时 加载GTA 贴图问题

最近在学习three.js的时候 ,发现按照官网的例子导入FBX模型,模型显示黑色 ,没有材质显示。故特此记录解决方法 1.引入FBXLoader 与 TGALoader import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader import { TGALoader } from 'three/examples/jsm/loaders/TGALoader const fbxloader =new FBXLoader()

Gentle02的博客 3988

在 Go 中声明包级全局 Map 的正确方法

在 Go 语言中,包级(全局)变量必须使用完整的变量声明语法,不能使用短变量声明 := —— 因为 := 仅限函数内部使用,其本质是“声明并初始化”,而包作用域只允许声明(var)、常量(const)或类型(type)定义。合法:包级全局 map,使用 var + makevar globalMap = make(map[string]string)func main() { globalMap["a"] = "A" fmt.Println(globalMap) // map[a:A]}?

m0_61788142的博客 191

关于charles map-local的使用

但是一个问题就是我没办法抓到初始化的包,不知道里面是什么,于是借助了外部charles工具对浏览器抓包,然后今天在逆向易盾滑块的时候需要对window某个全局变量进行hook操作, 用到了map-local,就是劫持请求,并用本地设置好的数据包或者js替换了看雪论坛第一个html的请求,然后页面加载后自动在所有js执行前触发了劫持的hook代码。同样 关于微信小程序抓包初始化的数据不好抓,同时怎么断点初始化的包, charles的map-local同样可以很给力的。借助map-local 注入的js代码。

blackblackblack223的博客 410

全局变量在嵌入式系统中是如何分配和初始化

嵌入式系统中,全局变量的内存管理机制包含三个关键阶段:编译阶段确定RAM地址和内存分布,烧录阶段将程序代码和初始化数据写入Flash,上电启动阶段通过启动代码自动初始化RAM。其中.data段变量从Flash拷贝初值,.bss段变量被清零,使得掉电后变量状态能够恢复。整个过程解释了为什么全局变量在重新上电后能保持初始状态,而不会因RAM掉电丢失数据。系统通过这种静态分配和自动初始化的机制,确保了全局变量的可靠性和一致性。

wcynbl的博客 673

unordered_map的insert导致core问题

在写lib库里,其中定义了一个全局变量unorderd_map类型,在写demo程序时,调用是没有问题的,但是提供给别人使用时,在插入数据时必现core。怀疑是因为全局变量初始化顺序的不确定导致。后来改在将unordered_map放到一个单独的单例类中得以解决。

多看多听多总结 578

android 全局变量存储,Android 中保存全局变量

在学习Android的时候一直未context的问题觉得头疼,因为想做一些工具类,但是又不是四大组件,总要来回传递context,觉得很麻烦,就想全局获取,最后看到application是全局单例的,所以改造一下。首先需要重写Application,主要重写里面的onCreate方法,就是创建的时候,初始化一个Map,这样就可以插入任意值。然后在整个应用中的各个文件中就可以对该变量进行操作了。在程...

weixin_34701481的博客 597
上一篇: C语言获取windows系统mac列表
下一篇: shell-每日一点(打印彩色输出)
pingd
博客等级 码龄15年 60粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值