2016-12-07 1069 views
3

cppreference.com的隨機文件檢查過程中,我注意到一些容器的新成員函數重載,其中C++17的新標準類型稱爲Node Handle什麼是節點句柄?

現在the documentation page of node handles on the same site給出了關於這項工作的多個細節和技術行爲,但它並沒有真正地傳達這種新類型的總體思想和目的。

因此,問題是什麼,Node Handle?

+1

相關 - https://stackoverflow.com/q/39423059/241631 – Praetorian

回答

3

節點句柄的思想是指地圖或集合中與地圖本身無關的「節點」。

其目的是爲了能夠將項目從一個地圖移動到另一個地圖,而不用調用任何用於複製或移動密鑰或數據的開銷。

這裏的一個例子:基於

http://en.cppreference.com/w/cpp/container/map/extract

4

節點容器必須支持簡單的提取和合並的可能性。這與將內部節點與集合A斷開並將它們放置到集合B中一樣簡單。這與將Key和Values移出容器不同,因爲我們不會留下需要清理的「空」節點,當我們已經有一個完美的節點可以移動時,我們也不會分配一個新的節點。

爲了方便這個new API for the containers該標準需要一種方法讓客戶程序員在不破壞封裝的情況下掌握這些節點。因此,手柄。