Имена отдельных векторов v1
, v2
, v3
, ... определяются во время компиляции. Если вы хотите иметь динамическое c число векторов, вам нужно vector
из vector
с, например:
std::vector<std::vector<int>> vs;
или если вы уже знаете количество векторов n, которое вы хотите :
std::vector<std::vector<int>> vs(n);
Тогда вместо использования v1
, v2
, v3
вы будете использовать vs[0]
, vs[1]
, vs[2]
, и ваш код может динамически использовать vector v[i]
где i
- переменная или выражение.
Вы можете добавить вектор к vs
с помощью emplace_back
/ push_back
или resize
:
vs.emplace_back();
//or
vs.push_back({});
// or
vs.push_back(std::vector<int>());
// or
vs.resize(4);
В последнем случае vs
будет содержать четыре пустых вектора (или первые 4 существующих вектора, если vs уже имел более 4 векторов).
И вы можете добавлять элементы к внутренним векторам, как обычно, например: :
vs[0].push_back(42);
vs[2].resize(x);
После этого первый вектор будет иметь длину один, а третий вектор будет иметь длину x
.
. Или вы можете вставить вектор с размером x
непосредственно после последний вектор:
vs.emplace_back(x);
// or
vs.push_back({x});
// or
vs.push_back(std::vector<int>(x));
Элементы могут быть доступны с двойными индексами, например,
vs[1][14]
читает 15-й элемент 2-го вектора. * 1 045 *