是否有类似advance的函数,但是会返回迭代器而不是void返回类型?我想要一个函数调用,如:
//...
[&value](InIter part_begin, std::size_t part_count)
{
difference_type ret =
std::count(part_begin, std::advance(part_begin,count), value);
return ret;
},
Run Code Online (Sandbox Code Playgroud)
advance是一个void返回类型函数,所以我现在正在做
//...
[&value](InIter part_begin, std::size_t part_count)
{
InIter end = part_begin;
std::advance(end,part_count);
difference_type ret = std::count(part_begin, end, value);
return ret;
},
Run Code Online (Sandbox Code Playgroud)
重要的是要注意我不能这样做part_begin + count,这对我正在使用的一些迫使我当前使用的迭代器不起作用std::advance.有没有更干净的方式这样做?
您可以使用std :: next来获取由给定数量的元素提前的迭代器.与之相反std::advance,std::next不会更改传递的迭代器本身.
[&value](InIter part_begin, std::size_t count) {
difference_type ret =
std::count(part_begin, std::next(part_begin,count), value);
return ret;
},
Run Code Online (Sandbox Code Playgroud)