函数与advance类似,返回迭代器
function similar to advance that returns an iterator?
是否有类似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;
},
但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;
},
重要的是要注意我不能只做part_begin + count
,这对我正在使用的一些迭代器不起作用,这迫使我目前使用std::advance
。有更干净的方法吗?
是的,它叫做std::next
。它不修改参数
您可以使用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;
},
相关文章:
- 返回迭代器以提升适配器转换的容器
- lower_bound 在 C++ STL 中返回迭代器,即使元素不存在也是如此.如何避免这种情况?
- 如何从函数中返回迭代器,包括结束案例
- 按属性搜索对象的向量并返回迭代器
- C++函数,它返回迭代器到具有给定值的第一个记录
- 返回迭代器内容并将其递增的简单方法
- 在模板中返回迭代器
- 为什么 gcc-4.9.2 不能支持 std::string.insert(迭代器,范围)返回迭代器
- 从函数返回 ::迭代器不会编译
- 使用 boost::iterator_facade<> 返回迭代器的 ref,但const_ref返回 const_iterator?
- 为什么map.erase返回迭代器
- 从函数返回迭代器会给我一个奇怪的错误
- 我可以以这种方式返回迭代器吗?
- 返回迭代器引用C++
- 使用decltype返回迭代器
- 返回迭代器与松耦合
- 返回迭代器范围(主列表的子集)
- 返回迭代器的函数缺少分号错误
- 当返回迭代器时,最好返回迭代程序类型还是实际对象
- 返回迭代器似乎会使其无效