Iterator在一个独特的元素上没有构造容器

时间:2017-04-07 13:24:12

标签: c++ boost iterator std

我有一个框架,它需要作为输入的迭代器。 但有时候,我有一个单独的元素,所以构建一个容器似乎太多了。

GIT_TRACE

我可以创建一种特殊类型的迭代器,但是标准库或boost中是否存在类似的东西?

2 个答案:

答案 0 :(得分:4)

单个元素可以被认为是一个大小为1的数组。因此,如果我们使用它,那么指向该对象的指针将是指向数组开头的指针(迭代器),并且指向一个过去然后结束数组的指针将只是指针递增一次。所以你可以做的是使用

call(&object, &object + 1)

现在你只处理单个对象。

答案 1 :(得分:1)

虽然已有答案,但我建议采用另一种方法:只需在调用中添加另一个重载,它接受一个元素本身,并使你的迭代器版本在循环中调用单个元素函数。

这将使代码更直接,并且在非内联案例中具有更好的优化代码的额外好处。