我有一个名为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
-loop的每一轮执行if (index)
检查,即使结果总是相同的。这与“担心性能”背道而驰。
通过将支票放在我的for
-loop之外,我可以很容易地避免这种情况。但是,我会得到大量重复的代码:
void Drawer::writeVector(...)
{
if (index) {
for (...) {
cout << i << "\t" << vec[i] << "\n";
}
}
else {
for (...) {
cout << vec[i] << "\n";
}
}
}
所以这些对我来说都是“坏”的解决方案。我一直在想的是,有两个私有函数,其中一个输出索引,然后调用另一个。另一个只计算出值。然而,我不知道如何在我的程序中使用它,我仍然需要if
检查来看看应该调用哪个……
根据这个问题,多态性似乎是一个正确的解决方案。但我不知道该如何在这里使用它。解决这类问题的首选方法是什么?
这不是一个真正的程序,我只是想知道应该如何解决这类问题。
https://stackoverflow.com/questions/16871471
复制相似问题