我正在研究结构的向量。
当我尝试使用迭代器调用此函数时,如下所示:
vec2.erase (vec2.begin()+iter2);
它向我发送了这个错误:
"no match for 'operator+' in '(+vec2)->std::vector<_Tp, _Alloc>::begin [with _Tp = wordstype, _Alloc = std::allocator<wordstype>]() + iter2'"
我可以发送迭代器(或任何其他参数)吗? 如果是,问题是什么?
答案 0 :(得分:3)
答案 1 :(得分:2)
是erase
可以使用迭代器,代码如下:
erase(itr2);
你也可以这样做:
erase(vec2.begin() + 3);
然而,迭代器不会声明operator+
,因此您的呼叫无效。
答案 2 :(得分:0)
您正在尝试将两个迭代器相加,这没有任何意义。
发布您的代码并解释您的目标。
答案 3 :(得分:0)
根据错误消息,您描述的问题似乎与std::vector<>::erase
没有任何关系。
编译器遇到问题的表达式为vec2.begin() + iter2
。显然,在你的情况下iter2
是一个迭代器。 vec2.begin()
也是一个迭代器。您不能将一个迭代器添加到另一个迭代器。这根本没有意义。因此错误。
vec2.begin() + iter2
你想做什么?如果iter2
确实是迭代器,为什么要尝试将其添加到vec2.begin()
?