首页 > 解决方案 > 将二维向量传递给函数

问题描述

如果我这样声明一个向量,

vector <int> v[100];

如何将它传递给函数并在该函数中将其作为参数接收?

我试过用这个,

void foo(vector <int>& v) {
..
}
main() {
..
foo(v);
}

标签: c++stl

解决方案


首先,如果您使用的是较新的 C++ 版本,请使用typedef,或者更好。using

typedef vector<int> twoD_vector[100];
// or alternatively (better)
using twoD_vector = vector<int>[100];

然后,不要使用旧式 C 数组 ([100])。请改用 std::array(或 boost::array)。它有std::iterators,有一个std::container界面,带有边界检查array.at(idx)和其他好的特性。

typedef std::array<std::vector<int>, 100> twoD_vector;

使用新类型twoD_vector很容易,就像这样。

twoD_vector v;

void foo(twoD_vector &val)
{
    // iterate over the 100 'outer' elements
    for (size_t i=0; i<val.size(); ++i) {
        // iterate over each element of the inner vector
        std::vector<int> &inner_vector(val[i]);
        printf("%u: size is %u", i, inner_vector.size());
        for (size_t j=0; j<inner_vector.size(); ++j) {
            // do something with the integer
            printf("inner vector[%u] has value %d\n", j, inner_vector[j]);
        }
    }
}

void main()
{
   foo(v);
}

PS这是直接从我的脑海中,代码片段中可能存在语法或程序错误,但它应该给你的想法。


推荐阅读