簡體   English   中英

uintmax_t用於矢量索引

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM