?

Log in

No account? Create an account
nyaload

Журнал Пушыстого

Журнал Пушыстого

меньше сравнений!
nyaload
_winnie
Если пишете какой-то свой часто вызывающийся operator[] у самописного контейнера, то имеет смысл упростить в нём проверку границ:

Было скажем вот так:
T &operator()(int x, int y)
{
  assert(x >= 0 && x < m_Width && y >= 0 && y < m_Height);
  return m_pData[y*m_Width + x];
}

А можно вот так:
T &operator()(int x, int y)
{
  assert((unsigned)x < (unsigned)m_Width && (unsigned)y < (unsigned)m_Height);
  return m_pData[y*m_Width + x];
}


Можно сразу писать unsigned/size_t в параметрах функции, но часто это невозможно из-за предупреждений компилятора или по историческим причинам и правилам перегрузки функций.
Спорить "это неочевидно/тебе разве важна скорость в дебаге" не надо, возражения на возражения на возражения и случаи когда необходимо/вредно придумайте сами. Противоположное, "Это же баян и очевидно" - увы, не для всех.