我正在處理以下類屬性:
std::map <std::ostream*, std::string> colors;
我想知道是否有辦法ostream用更好的資料結構替換指標?我在這里讀到,在這種情況下使用智能指標不是一個好主意,可能沒用。
將map僅用于存盤資訊并訪問它以執行簡單的操作,而無需修改ostream物件,而只是將它們進行比較、替換或添加到map自身。
提前致謝。
uj5u.com熱心網友回復:
不應該使用原始指標來管理動態分配物件的生命周期。正如您沒有提到任何與此相反的內容,我假設std::ostreams 存盤在其他地方,而您的指標只是指標:它們指向某個地方。他們不參與所有權,也不需要參與。特別是這意味著您確定在物件生命周期結束后不會使用指標。
如果所有這些都適用,那么就不需要智能指標,因為智能指標是管理物件生命周期的指標。原始指標是不參與生命周期管理的指標。在有智能指標之前,有擁有原始指標和非擁有原始指標,一切都更加混亂。如今,可以并且應該完全避免原始擁有指標,并且原始指標和智能指標并不是在相同用例中考慮的真正替代方案。
我想知道是否有辦法用更好的資料結構替換指向 ostream 的指標?
這當然取決于您要使用地圖的目的。考慮到生命周期的所有權和管理,原始指標只是表明指標不參與所有權并且沒有明顯需要用其他東西替換它們的正確選擇。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/496784.html
