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

时间:2016-03-30 19:10:36

标签: c++ pointers vector struct iterator

我是C ++的新手,并且在访问我的矢量元素时遇到了一些问题。它是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()应该从name返回myStruct vec[offset]

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

当我想实现B.Name()时,我只能通过移动迭代器vec并取消引用它来访问beginning中的结构元素。什么是正确的命令形式,可以做我想要的 - 正确地解除引用迭代器beginning

我的IDE中的完成导致我*( *(beginning + offset))->name,但它显示错误Pointer type is required

1 个答案:

答案 0 :(得分:0)

  

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

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

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

您可以使用临时代码更轻松地理解代码。

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