Если ваш компилятор поддерживает функцию списка инициализации (так она называется?) C ++ 11, вы можете сделать это:
const vector<vector<int>> v {
{ 1, 2, 3 },
{ 4, 5, 6 }
};
Обратите внимание, что вы не сможете добавить какие-либо элементы в первое измерение (но вы можете добавить элементы во второе), например,
v.push_back(vector<int> { 8, 9, 10 }); // BAD
v[0].push_back(4); // OK
Если бы вы хотели, чтобы второе измерение было неизменяемым, вы бы сделали
vector<const vector<int>> {
{ 1, 2, 3 },
{ 4, 5, 6 }
};
Тогда
v.push_back(const vector<int> { 8, 9, 10 }); // OK
v[0].push_back(4); // BAD
ИЛИ если вы хотите, чтобы сами элементы были const
, вы бы сделали
vector<vector<const int>> {
{ 1, 2, 3 },
{ 4, 5, 6 }
};
Тогда
v.push_back(vector<const int> { 8, 9, 10 }); // OK
v[0].push_back(4); // OK
v[0][0] = 2; // BAD
Возможно, вы захотите изменить его во время выполнения, так что, вероятно, неплохо удалить const
в целом.