如何在C ++中初始化const int二维向量

时间:2011-12-14 04:43:40

标签: c++ data-structures vector const

如何初始化const int二维向量:

Const int vector < vector < int > >  v ? 

v = {1 , 1 ; 1, 0}  ?

它不起作用。

3 个答案:

答案 0 :(得分:6)

你可以这样做(only in C++11):

const vector<vector<int>>  v{{1,2,3},{4,5,6}};

另请注意,您无需撰写> >。由于此问题已在C ++ 11中得到修复,>>可行。它不会被解释为右移运算符(与C ++ 03的情况一样)。

答案 1 :(得分:5)

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

答案 2 :(得分:0)

using namespace std;

int main(void){

    const vector< vector<int> > v(10, vector<int>(10,1));

    return 0;

}

将10x10数组初始化为1