我基本上处理的是一个有点标记的搜索掩码,我正在使用向量。这些索引需要达到机器上的最大整数(在stdint.h中定义)
基本上问题是
searchMask[ UINTMAX_MAX] = false; // or any value > unsigned int
会产生以下警告
warning: C4244: 'argument' : conversion from 'uintmax_t' to 'unsigned int',
possible loss of data
我考虑过只使用像unsigned char* = "1110010..."
这样的东西,只是按照那种方式翻转,但处理C字符串总是很麻烦,我怀疑访问char数组索引会有同样大小的问题吗? / p>
我可以使vector
的索引脱离uintmax_t
,还是应该转到C字符串路径,还是什么?
答案 0 :(得分:3)
实际上,所有STL容器都将使用size_t
作为其大小类型。因此,根据您的系统,size_t
可能被定义为unsigned int
,在您的情况下可能是32位整数。这可以解释为什么编译器在抱怨。
UINTMAX_MAX
定义为UINT64_MAX
,因此它不适合32位整数。尝试使用UINT32_MAX
宏,或与平台无关,并使用std::numeric_limits<size_t>::max()
。
另外,请尝试使用std::bitset<N>
。