繁体   English   中英

需要访问interator指向的指向结构指针+指针类型的向量中的元素

[英]Accessing elements pointed to by interator in vector of pointers to structures + pointer type is required

我是C ++的新手,在访问vector元素时遇到了一些问题。 它是指向类A中的myStruct的指针的向量:

struct myStruct{
 int val; 
 string name;
}myStruct;

Class A{
 ...
 vector<myStruct*> vec;
 B create()const;
} 

Class B{
 ...
 string Name(); //return name of current struct
 vector<myStruct*>::iterator beginning;
 int offset; //offset from the beginning
} 

类A具有方法create()const ,其中创建了类B的对象。 它应该像某种迭代器一样工作,经过带有某些属性的vec的一部分。 方法Name()应该在位置vec[offset]上从myStruct返回name

A.create()我创建Class B新对象,通过lower_bound()选择vec的迭代部分的开头,并将其放在new_object.beginning

当我想要实现B.Name()我只能访问结构的元素vec通过移动迭代beginning和取消引用它。 什么是正确的格式的命令,那会做我想做的-解引用迭代器beginning正确?

IDE中的完成使我进入*( *(beginning + offset))->name ,但随后显示错误Pointer type is required

什么是命令的正确形式,可以满足我的要求-取消对迭代器的正确引用?

beginning类型是vector<myStruct*>::iterator
beginning + offset类型也是vector<myStruct*>::iterator
*(beginning + offset)myStruct*

要访问myStruct元素的name成员,您需要使用(*(beginning + offset))->name

您可以使用临时文件来简化代码的理解。

myStruct* elementPtr = *(beginning + offset);
elementPtr->name;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM