我有一个名为 Writer
的类,它的函数 writeVector
是这样的:
void Drawer::writeVector(vector<T> vec, bool index=true)
{
for (unsigned int i = 0; i < vec.size(); i++) {
if (index) {
cout << i << "\t";
}
cout << vec[i] << "\n";
}
}
我尽量不要有重复的代码,同时还要担心性能问题。
在函数中,我对 for
循环的每一轮都进行 if (index)
检查,即使结果总是相同的。
这与“担心业绩”是背道而驰的。
我可以很容易地避免这一点,把检查外面的 for
循环。
然而,我会得到大量重复的代码:
void Drawer::writeVector(...)
{
if (index) {
for (...) {
cout << i << "\t" << vec[i] << "\n";
}
}
else {
for (...) {
cout << vec[i] << "\n";
}
}
}
所以这两个对我来说都是“糟糕”的解决方案。
我一直在想的是两个私有函数其中一个超出索引然后调用另一个。
The other one only outs the value.
然而,我不知道如何使用它与我的程序,我仍然需要 if
检查,看看哪一个调用..。
根据这个问题,多态似乎是一个正确的解决方案。 But I can't see how should I use it here. 解决这类问题的首选方法是什么?
这不是一个真正的程序,我只是对如何解决这类问题感兴趣。