Какую задачу вы решаете?
https://en.cppreference.com/w/cpp/numeric/math/round
Есть вектор значений типа: struct point { double x; double y; } Хочу быстро пройтись по вектору с формулой: pixelX = round((vector[i].x - offsetX)*scaleX) pixelY = round((vector[i].y - offsetY)*scaleY)
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
Это, получается, ты решал XY проблему? Хотел наиболее эффективно пройтись по вектору, а в итоге спросил о количестве инструкций для каждого оператора?
Может так случиться что после преобразования из системы координат обычной в пиксельную, в одном столбце изображения окажется множество точек и хотелось бы из этих точек одну самую высокую отрисовать, а не все сразу. Поэтому может потребоваться вот такая формула x ^ ((x ^ y) & -(x < y)); она вычисляет и возвращает максимум двух чисел. Меня оператор < удивил, я раньше не мог подумать что он может быть размером с 1 или несколько инструкций. Ну я вообще не задумывался о таком, что этот оператор можно использовать где то кроме if'ов
Наверное, не стоило так сильно мучаться со сложным выражением. Есть более понятный код, который компилятор ещё за тебя мог бы оптимизировать.
Вы про перегрузку операторов слышали? Оператор < вполне может оказаться целым методом класса
Обсуждают сегодня