有没有办法将矢量推回矢量? C ++

时间:2012-03-27 23:36:45

标签: c++ vector 2d

例如,如果我有一个或多个2D矢量,我只想将它们存储在数据库中。

 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);

6 个答案:

答案 0 :(得分:5)

您需要声明如下:

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

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

答案 1 :(得分: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);

答案 2 :(得分:1)

您应该尝试将数据库设为

vector< vector< vector <double> > >

而不是vector<vector>(无论是什么)。

Typedef可能有助于使其更具可读性

typedef vector<vector<double> > vec_2D;

vec_2D one2DVector;
vec_2D two2DVector;

vector<vec_2D> dataBase;

请记住,此dataBase将保存2D向量的副本,我猜这不是你想要的(但可能是)。您可能需要考虑让数据库成为指针容器或容器适当的智能指针(如shared_ptr)。

答案 3 :(得分:1)

您似乎希望dataBase成为2d向量的向量。如果是这种情况,那么你必须像这样定义它

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

答案 4 :(得分: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);

IT应该可以正常工作

但是,如果您要做的是连接矢量,那么您可以这样做。

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

答案 5 :(得分:0)

你有一个vector<double>的向量,但你正试图推vector<vector>