我有一个普遍的问题。希望你们其中一个人有一个很好的方法来解决我的问题。 如何初始化空矢量?
据我所知,在编译时必须知道数组的大小,但对于向量,它是不同的。向量存储在堆中(例如:std::vector versus std::array in C++)
在我的程序中,我想让客户决定如何准确插值。这就是我想使用矢量的原因。
问题是:出于明确安排的原因,我想写两种方法:
计算向量系数的一种方法
一种为其他函数提供系数的方法。
因此,我想将我的矢量声明为全局并且像
一样空vector<vector<double>> vector1;
vector<vector<double>> vector2;
然而,在我确定系数的方法中我不能使用
//vector containing coefficients for interpolation
/*vector<vector<double>>*/ vector1 (4, vector<double>(nn - 1));
for (int ii = 0; ii < nn - 1; ii++) {vector1[ii][0] = ...;
}
&#34; NN&#34;将在运行程序时由客户端提供。所以我的问题是如何初始化空向量?任何想法都表示赞赏!
请注意,如果我调用另一个函数,根据它的定义,将一个向量作为返回值给出,我可以写
vector2= OneClass.OneMethod(SomeInputVector);
其中OneClass是类的对象,OneMethod是类OneClass中的方法。
另请注意,当我删除向量前面的注释/ ** /时,它不再是全局的,并且在尝试访问系数时会抛出错误。
答案 0 :(得分:1)
使用public function getItem($itemNumber, $pageNumber = null)
:
resize
答案 1 :(得分:0)
使用resize()功能如下:
vector<vector<double>> v;
int f(int nn){
v.resize(4);
for(int i = 0; i < 4; i++){
v[i].resize(nn - 1);
}
}
答案 2 :(得分:-1)
在我看来,您实际上是在询问如何向全局矢量添加项目。如果是这样可能会有所帮助:
//vector containing coefficients for interpolation
for (int i = 0; i < 4; ++i)
vector1.push_back(vector<double>(nn - 1));
for (int ii = 0; ii < nn - 1; ii++)
{
vector1[ii][0] = ...;
}
答案 3 :(得分:-1)
不确定它是否是您想要的,但分配可能很有趣:
vector<vector<double>> vector1; // initialises an empty vector
// later in the code :
vector<double> v(nn -1, 0.); // creates a local vector of size 100 initialized with 0.
vector1.assign(4, v); // vector1 is now a vector of 4 vectors of 100 double (currently all 0.)