在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]
对我来说是完全可读的。
关于c++ - 为什么这个语法无效? vector 指针->[0],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1719928/