如何获得向量的每N个元素的“地址”

时间:2019-02-28 18:25:30

标签: c++ std stdvector

如何在不使用“原始循环”的情况下获取向量的每N个元素的“地址”。 std :: copy_if似乎是一个解决方案,但我无法获取元素的地址,我只能获取该值。

1 个答案:

答案 0 :(得分:0)

您可以将跳过的迭代器(也称为跨步迭代器)与std::for_each(或类似算法)一起使用。但是,标准库没有通用的跳过迭代器。

如果您希望自己实现跳过的迭代器,则想法很简单:编写一个以迭代器作为参数的模板。该模板是迭代器“适配器”。将大部分迭代器样板委托给经过修改的迭代器,但实现一个自定义的增量运算符,该运算符将根据您的条件跳过元素。

虽然迭代器适配器是可重用的,并且可以使用现有的实现,但是简单的循环可以减少很多工作:

for(size_t i = 0; i < v.size(); i += N)