我正在尝试创建一种方法,其中 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::map
returns一个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::iterator
是 bidirectional 这意味着它可以使用 ++
和 --
。
为了使用“iterator + intValue
”,迭代器应该是Random Access迭代器。 std::map
不是这种情况
我正在尝试使用名为 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::map
returns一个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::iterator
是 bidirectional 这意味着它可以使用 ++
和 --
。
为了使用“iterator + intValue
”,迭代器应该是Random Access迭代器。 std::map