【发布时间】:2010-12-15 18:00:41
【问题描述】:
在C++ 中,为什么vector 中的以下元素访问无效?
void foo(std::vector<int>* vecPtr) {
int n = vecPtr->size(); // ok
int a = vecPtr->[0]; // invalid
}
相反,我们要写的比较麻烦
(*vecPtr)[0] = 1;
我认为,operator[] 调用应该与方法调用具有相同的语法,我讨厌额外的星号和括号。 (我知道 C++ 有很多更严重的问题,但是每次我必须输入它时,这让我很烦......)
【问题讨论】:
-
不是一个答案,但你为什么要传递一个指向向量的指针而不是通过引用传递向量?这将使函数中的使用更简单,同时您清楚地声明调用者代码负责向量的生命周期。
标签: c++ syntax vector operator-overloading