[英]uintmax_t for vector indexes
我基本上是在處理位標記搜索掩碼,並且正在使用向量。 這些索引需要增加到機器上的最大整數(在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數組索引會遇到同樣的大小問題?
我可以使vector
的索引脫離uintmax_t
還是應該走C字符串路由,或者什么?
實際上,所有STL容器都將size_t
用作其大小類型。 因此,根據您的系統, size_t
可能被定義為unsigned int
,在您的情況下可能為32位整數。 那可以解釋為什么編譯器會抱怨。
UINTMAX_MAX
定義為UINT64_MAX
,因此它不適合32位整數。 嘗試使用UINT32_MAX
宏,或者與平台無關,並使用std::numeric_limits<size_t>::max()
。
另外,嘗試使用std::bitset<N>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.