gpt4 book ai didi

c++ - 从指针访问 [] 运算符

转载 作者:IT老高 更新时间:2023-10-28 12:41:12 25 4
gpt4 key购买 nike

如果我定义一个指向定义 [] 的对象的指针运算符,有没有直接从指针访问这个运算符的方法?

例如,在下面的代码中我可以直接访问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;
}

我很可能是错的,但它看起来像 (*VecPtr).empty()效率低于 VecPtr->empty() .这就是为什么我一直在寻找 (*VecPtr)[] 的替代品.

最佳答案

您可以执行以下任何操作:

#include <vector>

int main () {
std::vector<int> v(1,1);
std::vector<int>* p = &v;

p->operator[](0);
(*p)[0];
p[0][0];
}

顺便说一下,在 std::vector 的特殊情况下,您也可以选择:p->at(0),尽管它有一点点不同的意思。

关于c++ - 从指针访问 [] 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8493829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com