【发布时间】:2015-04-17 08:09:24
【问题描述】:
#include <string>
#include <iostream>
#include <vector>
#include <iomanip>
using namespace std;
class matrix
{
public:
matrix(int);
void func(int);
vector<vector<double> > m;
};
matrix::matrix(int size)
{
//set 3 X 3 = 9 elements to zero
vector<vector<int> > m(size, vector<int>(size));
// success
cout << "test1 if m[0][0] equals to zero: " << m[0][0] << endl;
}
void matrix::func(int size)
{
// failure, can't pass till here
cout << "test2 if m[0][0] equals to zero: " << m[0][0] << endl;
for(int i = 1; i != size; ++i)
{
m[i][i] = 0;
}
}
int main()
{
int input1 = 3;
matrix mat(input1);
mat.func(input1);
}
我想创建一个二维向量而不是使用数组。但是,我遇到了运行时错误。
我创建了一个vector<vector<int> > m(size, vector<int>(size)) 以确保vector 中的所有元素都等于0,并且我通过了test1。我无法通过我评论为“失败”的 test2。
【问题讨论】:
-
“test2”通过或失败意味着什么?
-
请同时发布您的程序的确切错误输出。
-
你不应该使用嵌套向量来表示 nD 数组,除了一些快速原型。看看Boost Multi-Array。