Böyle Writer
bir işlevi olan bir sınıfım var 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";
}
}
Hala performans konusunda endişelenirken, yinelenen bir koda sahip olmamaya çalışıyorum. İşlevde, sonuç her zaman aynı olsa da, döngümün if (index)
her turunda kontrol yapıyorum for
. Bu, "performans konusunda endişelenmeye" aykırıdır.
for
Çeki-döngümün dışına yerleştirerek bunu kolayca önleyebilirim . Ancak, bir sürü yinelenen kod alacağım:
void Drawer::writeVector(...)
{
if (index) {
for (...) {
cout << i << "\t" << vec[i] << "\n";
}
}
else {
for (...) {
cout << vec[i] << "\n";
}
}
}
Yani bunların ikisi de benim için "kötü" çözümler. Düşündüğüm şey, biri dizinin dışında kalan ve sonra diğerini arayan iki özel fonksiyon. Diğeri sadece değeri aşıyor. Ancak, programımla nasıl kullanacağımı çözemiyorum, if
hangisini arayacağımı görmek için yine de kontrole ihtiyacım var ...
Soruna göre polimorfizm doğru bir çözüm gibi görünüyor. Ama burada nasıl kullanmalıyım göremiyorum. Bu tür bir sorunu çözmenin tercih edilen yolu nedir?
Bu gerçek bir program değil, sadece bu tür bir problemin nasıl çözülmesi gerektiğini öğrenmekle ilgileniyorum.