C ++如何制作2D矢量函数?

时间:2016-12-21 13:58:58

标签: c++ function return-value 2d-vector

我试图在C ++中创建一个返回2D矢量的函数。 该函数还有一个2D向量作为参数,其思路是使用该函数返回此2D向量的修改版本。

我不会把我的整个代码放在这里,因为完全没有问题,但总结一下这个函数看起来像这样:

using std::vector;

vector<vector<char> > function(vector<vector<char> > grid) {

    int width = static_cast<int>(grid.front().size());
    int height = static_cast<int>(grid.size());

    for(int y=0; y < height; ++y) 
    {
        for(int x=0; x < width; ++x) 
        {
            grid[y][x]= 'H';
        }
    }
    return grid;   
}

然后我会在主要

中进行
vector<vector<char> > new_grid = function(grid);

但它并没有按照我使用它的方式工作,所以我有几个问题:

  1. 是否应初始化2D矢量函数大小?
  2. 我可以更改函数内grid的大小并返回更大的2D矢量吗?
  3. 并且,它可能是一个愚蠢的问题,但是,它实际上是否可以在void函数中在函数中检索值,数组,字符串而不使用return?
  4. 感谢您的帮助!

    如果你愿意,我可以展示我的整个代码,但它很大,可能不太清楚。

1 个答案:

答案 0 :(得分:0)

回答你的问题:

  1. 如果你试图遍历一个向量来设置它的值,那么是的,它需要被初始化。如果调用默认构造函数,向量将以0元素开头。要设置您可以调用grid.resize(new_size)的大小,现在网格中的所有向量的大小都为零,这样您就可以遍历网格并调整所有这些向量...
  2. 是的,您可以更改它的大小并返回更大的向量,使用.resize这不会影响您的原始网格,因为您传递了它的副本而不是它的引用。< / LI>
  3. 是的,您可以从void函数中检索值,如果您创建对变量的引用作为参数,则可以修改该变量的值。您可以在此处阅读:http://www.learncpp.com/cpp-tutorial/73-passing-arguments-by-reference/
  4. 如果您没有更改原始网格,最好通过const引用传递它,这样您就不会制作这么多副本。