2013-05-30 110 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都是以不同的方式实现的,并且针对不同的目的具有更好的性能,但在外部,它们都提供了[],以便用户感觉他正在使用动态数组。

所以,这并没有错,但它打败了目的。

相关问题