2013-05-30 79 views

回答

2

什麼都沒有,他們是等價的。雖然

1)

兩件事情IDs->operator[](j)(*IDs)[j]不太清楚。

2)如果您可以使用const vector<double>& IDs來代替,那麼您不僅可以從更清晰的IDs[j]中受益,還可以通過使用IDs無法修改矢量來獲得穩定性。

請記住,有一天你的代碼將由比你更不能幹的人維護,因此清晰度很重要。

+1

'const'並不意味着「不變性」。不是ID,也不是矢量。 –

+0

有意詳細說明R. Martinho Fernandes?我喜歡這樣的事實,如果你的對象被標記爲const,你不能在std :: vector上調用非const成員函數。 – Bathsheba

+0

http://coliru.stacked-crooked.com/view?id=93ceeeae2034b6099a70639b71cebab1-50d9cfc8a1d350e7409e81e87c2653ba –

0

使用此運算符的整個想法是,您的對象可以使用[]以某種方式隱藏真實數據結構或數據組織內部,但在外部提供類似數組的接口。

例如,向量和deques都是以不同的方式實現的,並且針對不同的目的具有更好的性能,但在外部,它們都提供了[],以便用戶感覺他正在使用動態數組。

所以,這並沒有錯,但它打敗了目的。

相關問題