需要访问指向结构的指针+指针类型的向量中的interator所指向的元素
Accessing elements pointed to by interator in vector of pointers to structures + pointer type is required
我是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()
应该在vec[offset]
的位置上从myStruct
返回name
在A.create()
中,我创建了Class B
的新对象,用lower_bound()
选择vec
迭代部分的开头,并将其放在new_object.beginning
中。
当我想实现B.Name()
时,我只能通过移动迭代器beginning
并取消引用它来访问vec
中结构的元素。什么是正确的命令形式,可以实现我想要的功能-正确取消引用迭代器beginning
?
IDE中的完成使我找到了类似*( *(beginning + offset))->name
的东西,但随后它显示了一个错误Pointer type is required
命令的正确形式是什么,它可以做我想要的事情——正确地取消引用迭代器的开头?
beginning
的类型为vector<myStruct*>::iterator
beginning + offset
的类型也是vector<myStruct*>::iterator
*(beginning + offset)
的类型是myStruct*
要访问myStruct
元素的名称成员,需要使用(*(beginning + offset))->name
通过使用临时的,可以使代码更容易理解。
myStruct* elementPtr = *(beginning + offset);
elementPtr->name;
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- 使用指向成员的指针将成员函数作为参数传递
- 需要访问指向结构的指针+指针类型的向量中的interator所指向的元素
- 将C++数组指针的一个过端转换为interator合法吗