最佳实践:传递数据数组

时间:2011-12-13 20:46:59

标签: c++

最近我遇到过几个需要用户将一组数据传递给方法的情况。将参数设置为const std::vector<stuff>&(或任何特定的容器或数组)似乎非常不通用。

我是否可以(并且应该)将数据组一般传递给方法?

3 个答案:

答案 0 :(得分:3)

传递两个迭代器,或者,使用c ++ 11,您可以使用范围。这就是C ++算法通常如何做到的。

编辑:我错误地将新的基于范围的for循环http://en.cppreference.com/w/cpp/language/range-for误解为具有算法的通用范围。只需传递两个迭代器即可指示通用算法的范围。

答案 1 :(得分:0)

当然。你可以传递迭代器。

答案 2 :(得分:0)

我猜Mark B表示基于范围的for循环(http://www.cprogramming.com/c++11/c++11-ranged-for-loop.html)。你需要在数组类中提供begin()和end(),迭代器实现增量运算符++,不等运算符!=和解引用运算符*

但是我赞成传递两个迭代器,因为它也适用于普通数组。您只需将指针传递给数组的第一个元素和数组的最后一个元素。