Не, определенно в выборе между size_t и и8, то явно надо использовать size_t.
Но если пойти дальше, то можно вполне использовать uint32_t - оптимальный вариант, либо uint16_t, если ты совсем жадный парень и уверен, что индексов не будет больше чем 65к