如果您的编译器支持 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。