Я знаю, что std::vector<T>
внутренне хранит данные непрерывно (если это не std::vector<bool>
) как в старом C++03
стандарте, так и в новом C++11
.
Хорошие вопросы о stackoverflow, которые касаются этого и цитируют стандарт: ответ, ответ.
А как насчет данных внутри вложенных векторов std::vector <std::vector <T> >
? Как это хранится?
Если каждый внутренний вектор должен хранить свои данные непрерывно, как это может быть правдой, что &v[n] == &v[0] + n for all 0 <= n < v.size()
.
Выражаясь несколько иначе, можно ли получить доступ к всем элементам, хранящимся в такой вложенной структуре, «просто» и последовательно (с помощью указателя или подобного) так же, как это можно сделать для одномерного вектор?