我正在尝试创建一个方法,该方法使用指针算术返回一对,它是否会出错

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

本文关键字:方法 指针 返回 出错 是否 创建 一个      更新时间:2023-10-16

我正试图使用迭代器从名为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并非如此