最近我遇到过几个需要用户将一组数据传递给方法的情况。将参数设置为const std::vector<stuff>&
(或任何特定的容器或数组)似乎非常不通用。
我是否可以(并且应该)将数据组一般传递给方法?
答案 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(),迭代器实现增量运算符++,不等运算符!=和解引用运算符*
但是我赞成传递两个迭代器,因为它也适用于普通数组。您只需将指针传递给数组的第一个元素和数组的最后一个元素。