Слишком много переменных, чтобы ответить на ваш вопрос.
Создайте абстракцию, чтобы вашему коду не было никакого дела до представления матрицы. Затем напишите свой код, используя любую реализацию. Тогда профилируйте это.
Если ваша матрица плотная, то "вектор векторов" вряд ли будет быстрее, чем один большой блок памяти, и может быть медленнее. (Погоня за двумя указателями для произвольного доступа + худшее месторасположение.)
Если ваши матрицы большие и разреженные, правильный ответ на ваш вопрос, вероятно, «ни один».
Итак, создайте абстрактный интерфейс, закодируйте что-нибудь и профилируйте его. (И, как говорит @Mark, существует множество сторонних библиотек, которые вы, вероятно, должны рассмотреть.)