C++ C++;插入到双向量的数组
如果我申报C++ C++;插入到双向量的数组,c++,vector,C++,Vector,如果我申报 vector< vector <double > > V; vectorV; 如何插入(3.0,4.0)作为第一个元素?不清楚是要将元素插入到预先存在的向量中,还是插入到新的空向量中。在这两种情况下,您都可以使用std::vectorstd::initializer\u list构造函数来初始化或分配(视情况而定): #include <vector> int main() { std::vector<std::vector<
vector< vector <double > > V;
vectorV;
如何插入
(3.0,4.0)
作为第一个元素?不清楚是要将元素插入到预先存在的向量中,还是插入到新的空向量中。在这两种情况下,您都可以使用std::vector
std::initializer\u list
构造函数来初始化或分配(视情况而定):
#include <vector>
int main()
{
std::vector<std::vector<double>> v1;
v1.push_back({3.0,4.0}); // push first element using initializer_list
std::vector<std::vector<double>> v2(10);
v2[0] = {3.0, 4.0}; // assign value to pre-existing vector
}
#包括
int main()
{
std::向量v1;
v1.push_back({3.0,4.0});//使用初始值设定项_list推送第一个元素
std::载体v2(10);
v2[0]={3.0,4.0};//为预先存在的向量赋值
}
您可以使用在向量中插入一对双精度:
std::vector<std::pair<double, double>> V;
V.push_back(std::make_pair(3.0, 4.0));
std::vector V;
V.推回(标准:制造成对(3.0,4.0));
在C++03中:
vector<vector<double>> V;
V.push_back(std::vector<double>(2));
V[0][0] = 3.0;
V[0][1] = 4.0;
访问该对中的一个元素将类似于
V[0]。第一个或V[1]。第二个您不能向该二维向量添加2个值,该二维向量仅在M x N位置存储一个double类型的值
您可以做的是创建一个结构,例如:
struct SPoint
{
double X;
double Y;
};
然后添加如下点:
vector< vector <SPoint > > v;
SPoint point = {3.0, 3.4};
v.push_back ( std::vector<SPoint >()
v[0].push_back(point);
vectorv;
SPoint point={3.0,3.4};
v、 推回(std::vector()
v[0]。推回(点);
希望有帮助。我认为类型为std::pair
的向量更合适。@HunterMcMillen它比向量的向量快吗?还有,我如何将一对插入向量?v.push_back(make_pair(3.0,4.0))
我如何在数组中引用它?通常我使用数组[I][j],但现在这似乎不起作用v[I].第一个
或v[i]。第二个
我意识到OP可能不知道他们在问什么,但这并不能回答目前的问题。也许你可以解释一下为什么这是一个解决方案?@juanchopanza OP想将长度为2的向量插入另一个向量中。当你可以使用pair时,没有理由使用另一个向量(已经是2号了)。可能OP需要通过[][]
访问,在这种情况下,std::array
的向量可能更合适。@juanchopanza可能是,但他们没有澄清。如果这两个数字以某种方式相关,配对更有意义;例如,一个(x,y)点。
struct SPoint
{
double X;
double Y;
};
vector< vector <SPoint > > v;
SPoint point = {3.0, 3.4};
v.push_back ( std::vector<SPoint >()
v[0].push_back(point);