为了账号安全,请及时绑定邮箱和手机立即绑定

请问在C++中vector地址怎么用的呢?

请问在C++中vector地址怎么用的呢?

C++ C
茅侃侃 2021-10-27 22:15:18
我写了这样一个程序:vector<Parsed_Operator>* PdOp ; PdOp = new vector<Parsed_Operator> ;*PdOp = Pd_OpStr.PdOp[PieceOrder] ;其中,Parsed_Operator是我之前定义的一个类,Pd_OpStr.PdOp是一个vector< vector<Parsed_Operator> >型的已知量,PieceOrder是一个int但是,之后,PdOp[i].OpID报错,其中OpID是Parsed_Operator中的成员希望各位帮我解释一下显示的问题是,PdOp[i]被当做了一个vector型(不太严谨但是这个意思)的类的对象
查看完整描述

2 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

PdOp是vector<Parsed_Operator>类型的指针,所以PdOp[i]是vector<Parsed_Operator>类型,并不是Parsed_Operator类型。程序修改如下:


vector<Parsed_Operator>* PdOp = &Pd_OpStr.PdOp[PieceOrder];cout << (*PdOp)[i].OpID;


查看完整回答
反对 回复 2021-10-31
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

PdOp指向vector类型,PdOp[i]相当于*(PdOp+i),它和*PdOp应该是同一个类型,所以是vector类型。
另外PdOp也不是一个数组的首地址,所以正确用法:
(*PdOp)[i].OpID
括号是必须的,下标操作符比解引用的优先级高。
这个表达式的理解是:取出指针PdOp指向的vector对象的第i个元素的OpID成员

查看完整回答
反对 回复 2021-10-31
  • 2 回答
  • 0 关注
  • 253 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信