首頁 > 後端開發 > C++ > 如何正確使用指標作為 std::map 中的鍵?

如何正確使用指標作為 std::map 中的鍵?

Barbara Streisand
發布: 2024-12-10 17:11:14
原創
661 人瀏覽過

How Can I Use Pointers as Keys in a std::map Correctly?

使用指針作為 std::map 中的鍵

當使用指針作為 std::map中的鍵時,指定一個比較函子,用於基於指向的值而不是指針進行比較

問題:

在提供的程式碼片段中,您使用的是std::map, int> g_PlayerNames。在不指定比較函子的情況下,映射會比較 char 指針,即使它們引用相同的以 null 結尾的字串,這些指針也可能指向不同的記憶體位置。

解決方案:

要解決此問題,請使用比較函數來比較 char* 鍵指向的以 null 結尾的字串。以下是範例:

struct cmp_str {
  bool operator()(char const *a, char const *b) const {
    return std::strcmp(a, b) < 0;
  }
};

std::map<char *, int, cmp_str> g_PlayerNames;
登入後複製

在此範例中,cmp_str 結構定義了一個使用 std::strcmp 比較指向字串的operator() 函式。這確保了映射鍵是根據其字串值而不是指標值進行比較的。透過使用此比較函子,您可以根據底層空終止字串正確操作映射。

以上是如何正確使用指標作為 std::map 中的鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板