[英]c++: vector::erase called with an iterator
我正在研究结构的向量。
当我尝试使用迭代器调用此函数时,如下所示:
vec2.erase (vec2.begin()+iter2);
它向我发送此错误:
"no match for 'operator+' in '(+vec2)->std::vector<_Tp, _Alloc>::begin [with _Tp = wordstype, _Alloc = std::allocator<wordstype>]() + iter2'"
我可以发送迭代器(或任何其他参数)吗? 如果是,那是什么问题?
是的, erase
可以与迭代器一起使用,代码如下所示:
erase(itr2);
您也可以:
erase(vec2.begin() + 3);
但是,迭代器未声明operator+
因此您的调用无效。
您试图将两个迭代器加在一起,这没有任何意义。
发布您的代码并解释您要做什么。
根据错误消息,您描述的问题似乎与std::vector<>::erase
无关。
编译器遇到问题的表达式是vec2.begin() + iter2
。 显然,您的情况下iter2
是一个迭代器。 vec2.begin()
也是一个迭代器。 您不能将一个迭代器添加到另一个。 这根本没有意义。 因此,错误。
您想通过vec2.begin() + iter2
什么? 如果iter2
确实是迭代器,那么为什么要尝试将其添加到vec2.begin()
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.