哪个更好?添加参数或使用成员函数

which is better? adding a parameter or using a member function

void recursiveFunction(container_t container) {
    size_t max   = container.size();
    ...
}

这是我的第一个实现。

void recursiveFunction(container_t container, const size_t max) {
    ...
}

这是我的第二次实现。

这些函数是递归函数,所以需要多次调用size()函数或者必须加一个参数。但是,我不想使用全局变量。 我该怎么办?

ostream& printAnswer(ostream& os, const completeTree_t& completeTree, size_t index) {
    size_t left  = index * 2;
    size_t right = index * 2 + 1;
    size_t max   = completeTree.size();
    if( left  < max )
        printAnswer(os, completeTree, left);
    os << completeTree[index];
    if( right < max )
        printAnswer(os, completeTree, right);
    return os;
}

这是我的完整源代码。

size 在 C++ 标准库容器上是 O(1)。如果你的也是,那就不要把它作为参数传递。

如果 size 在您的容器中不是 O(1),那么我的建议是您重命名该方法,因为它会绊倒您的代码的未来开发人员。 然后如果分析您的代码表明它是一个瓶颈,那么明确地将大小作为参数传递。