哪个更好?添加参数或使用成员函数
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),那么我的建议是您重命名该方法,因为它会绊倒您的代码的未来开发人员。 然后如果分析您的代码表明它是一个瓶颈,那么明确地将大小作为参数传递。
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),那么我的建议是您重命名该方法,因为它会绊倒您的代码的未来开发人员。 然后如果分析您的代码表明它是一个瓶颈,那么明确地将大小作为参数传递。