[英]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.