C++ map 定义基础

标签 c++ dictionary

我有一个我无法解决的问题。假设我有这个 map 定义:

map<string, int16_t> Registers;

但有时,我需要存储一个无符号 int16_t 而不是一个有符号 int16_t。 我该怎么做?

谢谢。

最佳答案

您可以使用更大的fish 类型,例如int32_t,或者使用boost::variant

int32_t 可以存储 int16_tuint16_t 可以存储的所有值,并保留它们之间的差值,例如 32768和 -32768(假设二进制补码)。如果您对 int16_tuint16_t 使用某种转换方案,则它们之间的差异将丢失,因为两者都将存储为 0x8000。区分像 0x8000 这样的值需要带外信息,如果有的话,你没有提到。

但是,int32_t 不会保留 32767 有符号和 32767 无符号之间的差异。如果这很重要,那么 boost::variant 可以保留该信息。

关于C++ map 定义基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9874557/

相关文章:

c# - 使用 Alt+Tab 的 WH_KEYBOARD 停止工作

c++ - 应该在程序结束时调用 FreeLibrary 吗?

c# - P/Invoke Struct with Pointers, C++ 从 C#

python - 根据匹配键的值比较 2 个字典

python - 来自 dict 析构函数的段错误

C++,某些组合永远不会出现使用 rand()

c++ - 使用 SSE 的矩阵 vector 和矩阵矩阵乘法

java - 如何将条目放入 map ?

c++ - 如何找到两张 map 的差异?

Java 从 TreeMap<String, TreeMap<String, Integer>> 检索值