簡體   English   中英

C++ 使用 std::map.count 數組作為 map 的鍵

[英]C++ Use std::map.count with array as key of map

我創建了一個 map,其中字節數組用作鍵,給定數組的出現頻率用作值。 我必須在不使用 Qt 框架的情況下做到這一點。

在 Qt 中,此代碼有效:

if (!mapa.count(byteArray)) mapa.insert(byteArray, 1);
else mapa[byteArray]++;

但是我的代碼不起作用。

byte byteArray[16];
map<byte(*)[16], int> mapa;
if (!mapa.count(&byteArray)) {
    mapa.insert(pair<byte(*)[16], int>(&byteArray, 1));
}
else {
    mapa[&byteArray]++;
}

在我的例子中,程序使用數組的地址,而不是它的數據。

當您創建這樣的數組時: byte arr[16] ,您實際上在 RAM 中創建了 16 個字節並將它們一個接一個地存儲。

因此,數組的名稱實際上是指向數組第一個元素的指針,因為指向第一個元素的指針實際上將指向數組的開頭。

因此,如果您創建一個 map ,其中鍵類似於此byte(*) [16] ,您指的不是字節數組,而是指針數組(也可以是數組的數組 - 二維數組)。

所以當你創建一個 map 時,你需要寫byte*來引用一個字節指針。

byte byteArray[16];
std::map<byte*, int> mapa;

if(maps.count(byteArray) == 0)
   //do something
else
   //do something else

暫無
暫無

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

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