/
githubmirror
/
omim
Обзор
Документация
Войти
/
githubmirror
/
omim
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
coding/move_to_front.cpp
33 строки
664 B
Maxim Pimenov
[base] [coding] Moved BWT and MTF from base/ to coding/.
21 янв 2020, 16:31
21 янв 2020, 16:31
8354f6d
Код
Авторство
О чём код?
#include "coding/move_to_front.hpp" #include "base/assert.hpp" #include <algorithm> #include <cstring> #include <numeric> using namespace std; namespace coding { // static size_t constexpr MoveToFront::kNumBytes; MoveToFront::MoveToFront() { iota(m_order.begin(), m_order.end(), 0); } uint8_t MoveToFront::Transform(uint8_t b) { auto const it = find(m_order.begin(), m_order.end(), b); ASSERT(it != m_order.end(), ()); size_t const result = distance(m_order.begin(), it); ASSERT_LESS(result, kNumBytes, ()); rotate(m_order.begin(), it, it + 1); ASSERT_EQUAL(m_order[0], b, ()); return static_cast<uint8_t>(result); } } // namespace coding