在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中文網其他相關文章!