Accessing the [] operator from a pointer
c++, operators, pointers
Solution
You could do any of the following:
#include <vector>
int main () {
std::vector<int> v(1,1);
std::vector<int>* p = &v;
p->operator[](0);
(*p)[0];
p[0][0];
}
By the way, in the particular case of `std::vector`, you might also choose: `p->at(0)`, even though it has a slightly different meaning.
Problem
If I define a pointer to an object that defines the `[]` operator, is there a direct way to access this operator from a pointer? For example, in the following code I can directly access `Vec`'s member functions (such as `empty()`) by using the pointer's `->` operator, but if I want to access the `[]` operator I need to first get a reference to the object and then call the operator. ``` #include <vector> int main(int argc, char *argv[]) { std::vector<int> Vec(1,1); std::vector<int>* VecPtr = &Vec; if(!VecPtr->empty()) // this is fine return (*VecPtr)[0]; // is there some sort of ->[] operator I could use? return 0; } ``` I might very well be wrong, but it looks like doing `(*VecPtr).empty()` is less efficient than doing `VecPtr->empty()`. Which is why I was looking for an alternative to `(*VecPtr)[]`.