【问题标题】:How to initialize a const int 2-dimension vector in C++如何在 C++ 中初始化 const int 二维向量
【发布时间】:2011-12-14 04:43:39
【问题描述】:

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

Const int vector < vector < int > >  v ? 

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

它不起作用。

【问题讨论】:

  • 我认为这不会像您认为的那样。 const vector 是您无法修改的向量。它不会在其中生成对象const

标签: c++ data-structures vector constants


【解决方案1】:

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

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

另请注意,您不需要写&gt; &gt;。由于此问题已在 C++11 中修复,&gt;&gt; 可以工作。它不会被解释为右移运算符(就像 C++03 的情况一样)。

【讨论】:

  • 那肯定不会在那里直接转换编译。
【解决方案2】:

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

【讨论】:

    【解决方案3】:
    using namespace std;
    
    int main(void){
    
        const vector< vector<int> > v(10, vector<int>(10,1));
    
        return 0;
    
    }
    

    将 10x10 数组初始化为 1

    【讨论】:

      猜你喜欢
      • 2013-11-04
      • 2011-05-04
      • 2021-10-02
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 1970-01-01
      相关资源
      最近更新 更多