簡體   English   中英

使用哪種方法檢查std :: map中是否存在數組鍵?

[英]Which method to use to check if array key exists in std::map?

在某些情況下,我使用以下代碼:

#define array_key_exists(find_key, arr) (arr.find(find_key) != arr.end())

但是我也只使用這種方法:

if(SomeMap["something"]){
    // key exists
}

我正在使用String來int映射。

他們倆都快...嗎? 還是假設第二種情況下我都沒有在地圖值中完全不使用零值的情況下出現錯誤? 到目前為止,第二種情況似乎還可以。

第二個if語句將始終被輸入,因為如果鍵不存在,它將被創建。 (之后,后續調用將僅返回現有元素。)

如果要查找值並使用它(如果存在),通常可以這樣做:

std::map<T>::iterator iter = theMap.find(theKey);
if (iter != theMap.end())
{
    // use iter
}
else
{
    // value doesn't exist
}

如果您只是想知道它是否在其中而不使用它,請執行以下操作:

if (theMap.count(theKey)) // in map, count will return either 0 or 1
{
    // it exists
}
else
{
    // it doesn't exist
}

至少不要使用宏! 在C ++中沒有理由:

template <typename Map, typename Key>
bool contains(const Map& pMap, const Key& pKey)
{
    return pMap.find(pKey) != pMap.end();
}

但這沒有用,只需使用count

與第一種方法一樣,使用find並與end iterator進行比較。 如果鍵不存在,第二種方法將在地圖中插入一個空元素。

if(SomeMap["something"] != NULL){
    // key exists
}

假設您沒有向地圖添加任何NULL項

暫無
暫無

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

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