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