例如,如果我有一个或多个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);
答案 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>
。