Mal*_*rba 33 c++ pointers operators
如果我定义一个指向定义[]运算符的对象的指针,是否有直接的方法从指针访问此运算符?
例如,在下面的代码中,我可以通过使用指针的运算符直接访问Vec的成员函数(例如empty())->,但是如果我想访问[]运算符,我需要先获取对象的引用然后调用运算符.
#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;
}
Run Code Online (Sandbox Code Playgroud)
我可能错了,但看起来做(*VecPtr).empty()的效率低于做VecPtr->empty().这就是我寻找替代品的原因(*VecPtr)[].
Rob*_*obᵩ 37
您可以执行以下任何操作:
#include <vector>
int main () {
std::vector<int> v(1,1);
std::vector<int>* p = &v;
p->operator[](0);
(*p)[0];
p[0][0];
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,在特定情况下std::vector,您也可以选择:p->at(0),即使它的含义略有不同.
return VecPtr->operator[](0);
Run Code Online (Sandbox Code Playgroud)
......会做的.但实际上,(*VecPtr)[0]表格看起来更好,不是吗?
| 归档时间: |
|
| 查看次数: |
15376 次 |
| 最近记录: |