在C++
中,为什么vector
中的以下元素访问无效?
void foo(std::vector<int>* vecPtr) {
int n = vecPtr->size(); // ok
int a = vecPtr->[0]; // invalid
}
相反,我们必须编写更麻烦的
(*vecPtr)[0] = 1;
我认为
operator[]
调用应具有与方法调用相同的语法,并且我讨厌多余的星号和括号。 (我知道C++有很多更严重的问题,但是每次我必须键入它时,都会使我烦恼……) 最佳答案
这是因为该语言希望成员出现在->
之后。这就是语言的构成方式。如果愿意,可以使用函数调用语法
// not really nicer
vecPtr->operator[](0);
如果必须按顺序执行很多操作,则使用
[0]
而不是括号可以大大提高可读性vecPtr[0][0]
否则,对于一个级别,我发现
(*vecPtr)[0]
对我来说是完全可读的。