将阵列类型更改为Int16会节省存储空间吗? 这是我第一次用C++中的大数据集工作。以前,我只想在数组中存储我想要的任何东西。因为我现在正在生成4000x4000的高度图,所以我想在我的程序突然消耗掉100MB(对于像我这样的独立玩家来说,这有点过高)之前,提高内存效率

将阵列类型更改为Int16会节省存储空间吗? 这是我第一次用C++中的大数据集工作。以前,我只想在数组中存储我想要的任何东西。因为我现在正在生成4000x4000的高度图,所以我想在我的程序突然消耗掉100MB(对于像我这样的独立玩家来说,这有点过高)之前,提高内存效率,c++,arrays,types,C++,Arrays,Types,我将以块的形式加载大部分数据,但因为我的程序在执行期间需要大量数据,所以最终还是会使用大型2D数组。我想找到一种方法让它们占用很少的内存 我的heightmap被设计成只接受小的整数值;可能小到足以装入Int8,但至少小到足以装入Int16。到目前为止,我一直在使用Int类型,在我的实现中是Int32类型 若我将2D数组和向量切换为Int16类型的集合,这会节省一半的存储空间吗?或者数组中的一个元素仍然会占用一个完整字节,而只是将这些未触及的位保留为零?从Int32切换到Int16(假设这与In

我将以块的形式加载大部分数据,但因为我的程序在执行期间需要大量数据,所以最终还是会使用大型2D数组。我想找到一种方法让它们占用很少的内存

我的heightmap被设计成只接受小的整数值;可能小到足以装入
Int8
,但至少小到足以装入
Int16
。到目前为止,我一直在使用
Int
类型,在我的实现中是
Int32
类型


若我将2D数组和向量切换为
Int16
类型的集合,这会节省一半的存储空间吗?或者数组中的一个元素仍然会占用一个完整字节,而只是将这些未触及的位保留为零?

Int32
切换到
Int16
(假设这与
Int16\t
相同)会将数组中的内存消耗降低一半(不考虑与可能动态调整大小的阵列一起进行的任何簿记)

另外,
int16\u t
需要2个字节,
int32\u t
需要4个字节。
16\u t
意味着16位


没有未触及的位,只有那些您选择在运行时不使用的位。没有未使用的整数位。0s和1s为整数的值提供标识

Int32
切换到
Int16
(假设这与
Int16\t
相同)(假设这与
Int32\t
相同)将使阵列产生的内存消耗减少一半(不考虑与动态大小的阵列一起进行的任何簿记)

另外,
int16\u t
需要2个字节,
int32\u t
需要4个字节。
16\u t
意味着16位


没有未触及的位,只有您选择在运行时不使用的位。没有带整数的未使用位。0s和1s为整数的值赋予标识

如果您谈论的是固定宽度整数类型,那么yes int16\u t保证为16位,没有填充位。您也可以验证这一点极低频:

std::cout << sizeof(int16_t[1000]) << " " << sizeof(int32_t[1000]); 

std::cout如果您谈论的是固定宽度整数类型,那么肯定int16\t是16位,没有填充位。您也可以自己验证这一点:

std::cout << sizeof(int16_t[1000]) << " " << sizeof(int32_t[1000]); 

std::我不确定你指的是哪个
Int16
,但我希望它占用2个字节,不少于1个。你指的是什么“未触及位”呢?不确定你指的是哪个
Int16
,但我希望它占用2个字节,不少于1个。你指的是什么“未触及位”?