我正在尝试创建一种方法,其中 returns 一对使用指针算术,但是它给出了一个错误?

I am trying to create a method which returns a pair using pointer arithmetic howevever it givies an error?

我正在尝试使用名为 map <int, vertex> nodemap 的映射中的迭代器 return 一对,但是我 运行 遇到了一个错误,其中显示: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;
}

我假设指针运算是可能的,并且映射由 Stack Question 中提到的对组成。

感谢您的帮助!

std::mapreturns一个bidirectional iterator,不支持加法。您可以使用 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::iteratorbidirectional 这意味着它可以使用 ++--

为了使用“iterator + intValue”,迭代器应该是Random Access迭代器。 std::map

不是这种情况