В C ++ std::vector
- это просто оболочка вокруг указателя необработанных данных. Сам вектор хранит данные в куче. Таким образом, вы можете хранить векторы в векторе как объекты или указатели на них.
Самый простой способ - хранить векторы в векторе как объекты, но вы должны тщательно следить за тем, как вы передаете этот внешний вектор в функции. Вы должны всегда передавать его по ссылке или указатель на него, чтобы не запускать копирование всех вложенных векторов. С другой стороны, такой вектор будет автоматически и правильно удалять вложенные векторы, когда его деструктор срабатывает.
Вектор указателей на векторы имеет свои преимущества и недостатки. С одной стороны, когда функция вызывается неточно с этим вектором в качестве параметра, будут скопированы только указатели. С другой стороны, доступ к векторам через указатель влияет на производительность. Кроме того, при хранении указателей на векторы вы должны позаботиться об их удалении самостоятельно.
Если ваши векторы создаются и удаляются в другом месте, и вам нужно только просмотреть их и изменить их в своем коде, то, очевидно, вектор указателей на векторы - ваш лучший выбор.