尽管它们在阵列中是相同的,但我更喜欢[i],原因如下.假设你有这样的代码:
double gradient[3];
// 200 lines later
double dx = gradient[0]; // Works fine
double dy = *(gradient + 1); // Works just as well
Run Code Online (Sandbox Code Playgroud)
然后有人认为std :: vector看起来比double []更好:
vector<double> gradient;
// 200 lines later
double dx = gradient[0]; // Still works
double dy = *(gradient + 1); // Ouch!
Run Code Online (Sandbox Code Playgroud)
然后其他人决定一直以对象为导向:
class Gradient
{
public:
double operator[](int index) const;
};
// 1000 lines later
Gradient gradient;
// 200 lines later
double dx = gradient[0]; // Still works
double dy = *(gradient + 1); // Ouch!!!
Run Code Online (Sandbox Code Playgroud)
因此,从可维护性的角度来看,我更倾向于准确地说出我的意思,而不是用依赖于上下文的同义词来模糊意图.如果我的意思是"采取一个"的第i个元素,那么我在C++语言中就是这么说的:
a[i];
Run Code Online (Sandbox Code Playgroud)
而不是依赖于一个人的特定实现可以使用一个更高级的表达式.