У меня есть класс под названием 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";
}
}
Я пытаюсь не дублировать код, но все еще беспокоюсь о производительности.
В этой функции я выполняю проверку if (index)
в каждом раунде моего for
-loop, хотя результат всегда один и тот же.
Это противоречит "беспокоиться об эффективности".
Я мог бы легко избежать этого, поставив чек вне моего for
-loop.
Тем не менее, я получу множество дубликатов кода:
void Drawer::writeVector(...)
{
if (index) {
for (...) {
cout << i << "\t" << vec[i] << "\n";
}
}
else {
for (...) {
cout << vec[i] << "\n";
}
}
}
Итак, это для меня "плохие" решения.
То, о чем я думал, это две частные функции, одна из которых выходит из индекса, а затем вызывает другую.
Другой только выдает значение.
Тем не менее, я не могу понять, как использовать его с моей программой, мне все равно понадобится проверка if
, чтобы узнать, какой из них вызывать...
В соответствии с проблемой, полиморфизм кажется правильным решением. Но я не могу понять, как использовать его здесь. Каким будет предпочтительный способ решить эту проблему?
Это не настоящая программа, Мне просто интересно узнать, как решить эту проблему.