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

如何正確使用 char* 作為 C std::map 中的鍵?

Linda Hamilton
Linda Hamilton原創
2024-12-11 11:37:10552瀏覽

How Can I Correctly Use char* as Keys in a C   std::map?

在std::map 中使用char* 作為Key

在C 中,使用char 指標時可能會遇到問題(char ) 作為std::map 中的鍵。當嘗試使用 char 鍵建立映射並遇到意外行為時,可能會發生這種情況。

要解決此問題,重要的是要了解預設情況下,std::map 使用指標位址比較鍵,不是他們所代表的實際角色。這可能會導致不正確的比較和不可靠的行為。

要解決此問題,您必須向映射提供比較函子。比較函子是定義如何比較鍵的函數。透過使用比較 char* 指標指向的以 null 結尾的字串的函子,您可以確保映射根據字串值正確排序和檢索元素。

以下是如何定義char* 鍵的比較函子:

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

定義比較函子後,您可以將其作為第三個模板參數傳遞給標準::地圖。這將強制映射使用函子來比較鍵:

map<char *, int, cmp_str> BlahBlah;

透過提供比較函子,您可以指示映射比較char* 鍵指向的實際字串,確保正確的排序和檢索基於字串值的元素。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn