在设计需要一个连续数组以指针的形式的函数时,是否应该使用
传递数组A.
指针和数组的大小:
void foo(int* arr, size_t size);
或 B.
开始指针和结束指针:
void foo(int* arrBegin, int* arrEnd);
显然,两种方法中参数的总大小是相同的,但是是否有充分的理由选择其中一种方法?我相信方法 A 是更常见的一种,但我发现这两种方法都被频繁使用。在某些情况下是否更有意义,反之亦然?与另一种相比,其中一种有什么缺点吗?或者这并不重要,您应该选择一种方法并坚持下去?
有最少惊喜
的一般规则如果我写一个类似的函数(就像@Elijay建议的那样)
template<typename RandomIt>
void f(RandomIt first, RandomIt last)...
我可以肯定,使用我的函数、连续容器、类似指针的参数类型等的每个人都可以很好地理解它。
除此之外,first和last几乎适用于所有标准库算法和容器。非常方便又容易理解。
我的2美分。