Код: Выделить всё
long long countOdd(const std::vector& v)
{
long long count = 0;
const int size = v.size();
for(int i = 0; i < size; ++i)
{
if(v[i] & 1)
{
++count;
}
}
return count;
}
long long countEven(const std::vector& v)
{
long long count = 0;
const int size = v.size();
for(int i = 0; i < size; ++i)
{
if(0 == (v[i] & 1))
{
++count;
}
}
return count;
}
Код: Выделить всё
template
long long countTemplate(const std::vector& v1)
{
long long count = 0;
const int size = v1.size();
for(int i = 0; i < size; ++i)
{
if(countEven)
{
if(v1[i] & 1)
{
++count;
}
}
else if(0 == (v1[i] & 1))
{
++count;
}
}
return count;
}
Код: Выделить всё
int main()
{
if(somecondition)
{
countTemplate(vec); //Count even
}
else
{
countTemplate(vec); //Count odd
}
}
Обратите внимание, что подсчет чисел предназначен только для иллюстрации, поэтому, пожалуйста, не предлагайте другие методы подсчета.
РЕДАКТИРОВАТЬ:
Хорошо. Я согласен, что это может не иметь особого смысла с точки зрения производительности. Но, по крайней мере, с точки зрения удобства обслуживания, мне бы хотелось поддерживать только одну функцию вместо двух.
Подробнее здесь: https://stackoverflow.com/questions/129 ... al-functio