// Assuming fixed dimensions:
matrix[el_position/size][el_position%size];
/
- целочисленное деление, поэтому вычисляет количество полных строк, которые мы должны пройти, чтобы найти искомую строку, а %
- остаток от целочисленного деления, поэтому определяет, как далеко мы должны сместить в строка.
Если один из ваших внутренних векторов не будет одинакового размера, это не удастся. Вы можете проверить это предположение с двумя утверждениями:
assert(matrix.size()); // needed for the front element to be valid
assert(std::count(matrix.begin(), matrix.end(), matrix.front().size())
== matrix.size()); // the count will be the number of elements
// if it's correct