5
我有一個std :: set與Compare類,它需要額外的參數來比較鍵。這個變量參數是在運行時確定的,我將它打包在集合的鍵中,以使其可以被比較訪問。將更多數據傳遞給std:set比較類
但是,該參數在邏輯上屬於該集而不是按鍵,所以該解決方案看起來很笨拙並且在所有按鍵上重複相同的值。
是否有一種優雅的方式將其他參數傳遞給Compare類? (我首先想到了set :: value_comp,但它返回比較對象的值,而我需要一個參考)。
謝謝。
這個答案是正確的,但我發現很難遵循。澄清:你需要創建一個帶有額外參數的比較對象,然後將該對象傳遞給std :: set構造函數。在構建集合之後不要嘗試修改參數。 –
@Mark Ransom - 如果排序規則發生變化,那麼整個集合都必須重建。如果參數不影響排序順序,則可以通過引用或指針將其傳遞給Traits。 – Dewfy
沒有辦法重建一套,除了複製到一個新的,所以我支持我的聲明。給定相同的輸入組時,比較對象必須始終返回相同的值,否則該組可能會出現故障。 –