operator [] - 我为什么不使用它?

时间:2013-05-30 08:51:50

标签: c++

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

有什么区别:

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

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

2 个答案:

答案 0 :(得分:2)

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

但有两件事

1)IDs->operator[](j)不如(*IDs)[j]明确。

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

请记住,有一天,您的代码将由能力较差的人维护,因此清晰度非常重要。

答案 1 :(得分:0)

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

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

所以,它并没有错,但它失败了。