2012-03-27 39 views
0

例如,如果我有一个或多个2D矢量,并且我只想将它们存储在数据库中。有什么办法可以将矢量推回到矢量中? C++

vector<vector<double>> one2DVector; 
vector<vector<double>> two2DVector; 

//Obviously can't do that but this is what I want to do 
vector<vector> dataBase; 

dataBase.push_back(one2DVector); 
dataBase.push_back(one2DVector); 
+0

什么不行? – 2012-03-27 23:37:43

+3

礼貌是好的。但是,你认为从现在开始十年后有人发现这个问题会在检查答复之前在乎你是否必须吃东西? :) – 2012-03-27 23:51:42

+0

我只是觉得不好,如果我不回答。当他们帮助我时,我不想忽略这里的人。 – Claud 2012-03-27 23:55:35

回答

5

你需要声明它是这样的:

vector<vector<vector<double>>> dataBase; 

请注意,如果您使用C++ 98,而不是C++ 11,你需要把>括号之间的空格。

+0

正是我在找的东西。谢谢。 – Claud 2012-03-27 23:50:48

0
vector<vector<double>> one2DVector; 
vector<vector<double>> two2DVector; 

//Obviously can't do that but this is what I want to do 
vector<vector<vector<double> > > dataBase; //HERES THE EDIT 

dataBase.push_back(one2DVector); 
dataBase.push_back(one2DVector); 

它应该工作的罚款

但是如果你想要做的是串联的载体,那么你可以做的。

vector<vector<double>> database(one2DVector); 
database.insert(database.end(), two2DVector.begin(), two2DVector.end()); 
1

你应该尽量使你的数据库

vector< vector< vector <double> > > 

,而不是vector<vector>(无论是)。

类型定义可能有助于使心中这个多一点可读

typedef vector<vector<double> > vec_2D; 

vec_2D one2DVector; 
vec_2D two2DVector; 

vector<vec_2D> dataBase; 

记住,这dataBase将举行复制2D向量,这是我猜的是不是真的你想要的(但也许它是)。你可能想考虑让你的数据库是一个指针或容器相应的智能指针的容器(如shared_ptr)。

1

看来你想要dataBase成为2d向量的向量。如果是这种情况,那么你必须定义它像这样

vector<vector<vector<double> > > dataBase;

3
vector< vector< vector <double> > > database; 
vector<vector<double>> one2DVector; 
vector<vector<double>> two2DVector; 
... 
//insert elements into two-dimension arrays. 
... 
database.push_back(one2DVector); 
database.push_back(two2DVector); 
0

你的vector<double>向量,但你试图把vector<vector>