c++ - 为什么这个语法无效? vector 指针->[0]

标签 c++ syntax vector operator-overloading

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/

相关文章:

c++如何测试堆中的某一位内存是否空闲?

javascript - js/jquery比较的正确语法?

javascript - 在 ReactJS 中从另一个组件更新状态

syntax - "@"在 Elixir 中有什么作用?

C++ - vector push_back() 在 fgets() 之后不工作

c++ - 如何在 MFC 常规 DLL 中创建和使用 CFormView? ( Visual Studio 2008)

c++ - make后如何运行.o文件

C++包含和重新定义类错误

java - 写入具有 Vector 属性的对象时出现 java.io.NotSerializedException

java - 使用 PDFBox 在 PDF 上绘制 vector 图像