将连续数组传递给函数时,传递指针和大小,还是传递开始指针和结束指针更合适?

问题描述 投票:0回答:1

在设计需要一个连续数组以指针的形式的函数时,是否应该使用

传递数组

A.

指针和数组的大小:

void foo(int* arr, size_t size);

或 B.

开始指针和结束指针:

void foo(int* arrBegin, int* arrEnd);

显然,两种方法中参数的总大小是相同的,但是是否有充分的理由选择其中一种方法?我相信方法 A 是更常见的一种,但我发现这两种方法都被频繁使用。在某些情况下是否更有意义,反之亦然?与另一种相比,其中一种有什么缺点吗?或者这并不重要,您应该选择一种方法并坚持下去?

c++ arrays pointers function-parameter
1个回答
0
投票

最少惊喜

的一般规则

如果我写一个类似的函数(就像@Elijay建议的那样)

template<typename RandomIt>
void f(RandomIt first, RandomIt last)...

我可以肯定,使用我的函数、连续容器、类似指针的参数类型等的每个人都可以很好地理解它。

除此之外,firstlast几乎适用于所有标准库算法和容器。非常方便又容易理解。

我的2美分。

© www.soinside.com 2019 - 2024. All rights reserved.