1

我被告知使用operator[]是错误的。

有什么区别:

vector<double> * IDs;
...
IDs->operator[](j) = 1;

和:

vector<double> * IDs;
...
(*IDs)[j] = 1;
4

2 回答 2

2

什么都没有,它们是等价的。

虽然有两件事

1)IDs->operator[](j)不如 清楚(*IDs)[j]

2)如果您可以使用const vector<double>& IDs,那么您不仅可以从更清晰的内容中受益,IDs[j]而且您还可以通过无法使用 修改矢量这一事实获得稳定性IDs

请记住,有一天您的代码将由能力不如您的人维护,因此清晰很重要。

于 2013-05-30T08:58:29.253 回答
0

使用此运算符的整个想法是,您的对象可以使用 [] 以某种方式在其内部隐藏真实的数据结构或数据组织,但在外部提供类似数组的接口。

例如,vector 和 deques 的实现完全不同,并且针对不同的目的具有更好的性能,但在外部,它们都提供 [] 以便用户感觉他正在使用动态数组。

所以,这并没有错,但它违背了目的。

于 2013-05-30T09:01:24.887 回答