2012-03-27 40 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>