c++ - 将二维向量传递给函数
问题描述
如果我这样声明一个向量,
vector <int> v[100];
如何将它传递给函数并在该函数中将其作为参数接收?
我试过用这个,
void foo(vector <int>& v) {
..
}
main() {
..
foo(v);
}
解决方案
首先,如果您使用的是较新的 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这是直接从我的脑海中,代码片段中可能存在语法或程序错误,但它应该给你的想法。