2013-02-14 65 views
6

這個問題很明顯,我希望能夠在我實際插入它之前檢查一個關聯數組是否包含一個值(即將)(可能)插入的值。有沒有簡單的方法來做到這一點,而不需要搜索dict.keys?也許像if (dict.contains(val)) ...測試關聯數組是否包含D中的密鑰

回答

7

測試是否關鍵是一個關聯數組,使用in操作:

string[int] aa; 

string* ps = 100 in aa; 

if(ps) 
{ 
    // 100 is a key in aa, ps is a pointer to the corresponding value 
} 
else 
{ 
    // 100 is not a key in aa 
} 

測試是否存在,你必須通過aa.values進行搜索。

+0

這是值得注意的一個指針將評估爲假的條件,當且僅當指針'是null' – 2013-02-15 02:13:15

+3

我想編寫代碼通常的方式是'如果(汽車V =在AA關鍵){fn(* v); } else {...}' – BCS 2013-02-15 02:34:51

+0

謝謝yoooou! c: – 2017-03-25 18:13:58

1
if (!dict.get(key, null)) 
    dict[key] = val; 
+0

不起作用,因爲'null'可能是'dict'中的有效值;你可以調用'dict [key] = null;',那麼'dict'鍵將返回'true'。 – beerboy 2014-05-06 03:43:44

+0

@beeryboy這取決於你是否可以使用它的情況 – fwend 2014-05-06 17:07:52