繁体   English   中英

C ++:用迭代器调用的vector :: erase

[英]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'" 

我可以发送迭代器(或任何其他参数)吗? 如果是,那是什么问题?

您不能将iterator添加到iterator

iter2已经指向向量中的具体位置,因此您可以编写:

iter2 = vec2.erase(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM