簡體   English   中英

如何 memset 一組布爾值?

[英]How to memset an array of bools?

void *memset(void *dest, int c, size_t count)

第三個參數是數組中的字符數或字節數。 你將如何 memset 布爾數組,比如 bool bArray[11]?

MSDN 說:“安全說明 - 確保目標緩沖區至少有足夠的空間容納 count 個字符。”

std::fill()應盡可能使用memset()

std::fill(std::begin(bArray), std::end(bArray), value);

如果bArray是指針,則應使用以下內容:

std::fill(bArray, bArray + arraySize, value);
memset(buffer_start, value, sizeof(bool) * number_of_bools);
//Array declaration
bool arr[10];

//To initialize all the elements to true

memset(arr,1,sizeof(arr));

同樣,您可以通過將 1 替換為 0 來將所有元素初始化為 false。

memset 以字節的倍數設置內存。 因此,唯一的方法是向 bool 指針添加填充,使其長度為 8 的倍數。然后執行 memset。 就我個人而言,我更喜歡除了放置冗余填充之外還有其他選擇。 但迄今為止我還沒有找到任何替代解決方案。

就像這個例子:

    bool primes[MAX];
    memset(primes,true,sizeof(bool) * MAX);

使用memset將 11 個 bool 元素的數組設置為 true :

const int N = 11;
bool arr[N];
memset(arr, 1, sizeof(bool) * N);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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