您可以像这样声明一个多维向量:
std::vector< std::vector<int> > v;
您还可以使用 typedef 使代码更易于遵循:
typedef std::vector<int> int_vector;
typedef std::vector<int_vector> int_matrix;
像第一个示例一样编写时,应避免一个接一个地编写右尖括号,以免编译器将其与>>
运算符混淆。
您还应该避免从函数返回这样的对象,因为此操作涉及复制整个向量。相反,您可以通过引用传递向量,例如:
void process(int_matrix& m)
{
// m.push_back(...)
}
int main(int argc, char* argv[])
{
int_matrix m;
// Initialize m here.
// ...
// Call your methods.
process(m);
// ...
return 0;
}
编辑:
您可以像这样构造您的代码:
// int_matrix.hpp
#ifndef _INT_MATRIX_HPP
#define _INT_MATRIX_HPP
#include <vector>
typedef std::vector<int> int_vector;
typedef std::vector<int_vector> int_matrix;
extern void process(int_matrix& m);
#endif // ~_INT_MATRIX_HPP
.
// int_matrix.cpp
#include "int_matrix.hpp"
void process(int_matrix& m)
{
m.clear();
// ...
}
.
// main.cpp
#include "int_matrix.hpp"
#include <iostream>
int main(int argc, char* argv[])
{
int_matrix m1;
int_matrix m2;
// ...
process(m1);
process(m2);
// ...
return 0;
}