我正在尝试创建一个方法,该方法使用指针算术返回一对,它是否会出错
I am trying to create a method which returns a pair using pointer arithmetic howevever it givies an error?
我正试图使用迭代器从名为map <int, vertex> nodemap
的映射返回一对,但我遇到了一个错误,上面写着:error: invalid operands to binary expression ('std::map<int, vertex>::iterator' (aka '__map_iterator<typename __base::iterator>') and 'int') std::pair<int, vertex> node = *(it + v);
下面是我的功能代码:
std::pair<int, vertex> Graph::getMap(int v)
{
std::map <int, vertex>::iterator it = nodemap.begin();
std::pair<int, vertex> node = *(it + v);
return node;
}
我假设指针算术是可能的,并且映射是由这个堆栈问题中提到的对组成的。
感谢您的帮助!
std::map
返回一个双向迭代器,不支持加法。您可以使用std::advance(it, v);
,但是,我不确定您为什么要这样增加map::iterator
。如果您想使用密钥v
检索vertex
,您可以使用:
std::map <int, vertex>::iterator it = nodemap.find(v);
错误来自这一行:
std::pair<int, vertex> node = *(it + v);
std::map::iterator
是双向的,这意味着它可以在上面使用++
和--
为了使用"iterator + intValue
",迭代器应该是随机访问迭代器。std::map
并非如此
相关文章:
- 将一个类的方法指针存储到另一个类中
- 如何调用返回类方法指针的类方法
- 通过reinterpret_casting方法指针从指针调用派生类的方法。这是 UB 吗?
- 泛型方法指针.reinterpret_cast指向不同类的方法指针,这是 UB 吗?
- C++;类方法指针;λ;将 lambda 作为成员函数指针传递;
- 使用模板、方法指针和字符串键入推导
- 将方法指针作为整数参数发送到C#的C 方法
- 从C 中的VTable获取方法指针
- 模板化方法指针 - 无法匹配函数参数的指针
- 获取特定的模板重载方法指针
- 如何将方法指针声明为Typedef方法参数
- 如何将方法指针类型转换为函数指针类型
- 如何在使用 pthreads 时将方法指针作为函数参数传递C++
- 方法指针映射,编译器说他们不接受任何参数
- C# 方法指针,如 C++ 中的指针
- c++创建新的LinkedList类:Clear()方法指针被释放未分配
- 尝试获取类方法指针时出现E_NOINTERFACE
- 传递和强制转换方法指针
- 常量方法指针的类型是什么
- 将对象的方法指针传递给接受 [静态方法指针/全局函数] 指针的函数