第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Go 中的地圖 - 如何避免雙鍵查找?

Go 中的地圖 - 如何避免雙鍵查找?

Go
慕斯王 2021-09-10 21:44:21
假設(shè)我想更新地圖中的某個(gè)現(xiàn)有值,或者如果找不到鍵,則執(zhí)行其他操作。我該如何做到這一點(diǎn),而不執(zhí)行 2 次查找?以下 C++ 代碼的 golang 等價(jià)物是什么:auto it = m.find(key);if (it != m.end()) {    // update the value, without performing a second lookup    it->second = calc_new_value(it->second);} else {    // do something else    m.insert(make_pair(key, 42));}
查看完整描述

2 回答

?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

Go 不像 C++ 那樣暴露映射的內(nèi)部(鍵,值)對數(shù)據(jù)結(jié)構(gòu),所以你不能完全復(fù)制它。


一種可能的解決方法是創(chuàng)建地圖指針的值,這樣您就可以在地圖中保留相同的值,但更新它們指向的內(nèi)容。例如,如果m是 a map[int]*int,則可以使用以下方法更改值:


v := m[10]

*v = 42

話雖如此,如果額外的內(nèi)存管理開銷會消耗減少哈希查找次數(shù)所帶來的節(jié)省,我不會感到驚訝。因此,值得對您選擇的任何解決方案進(jìn)行基準(zhǔn)測試。


查看完整回答
反對 回復(fù) 2021-09-10
?
交互式愛情

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊

你不能。情況實(shí)際上與 Python dicts 相同。不過應(yīng)該沒有關(guān)系。Go map 的查找和賦值都是 O(1) 分?jǐn)偟?。結(jié)合這兩個(gè)操作具有相同的時(shí)間復(fù)雜度。


查看完整回答
反對 回復(fù) 2021-09-10
  • 2 回答
  • 0 關(guān)注
  • 178 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號