如何在c++中初始化一个空的全局向量
How to initialize an empty global vector in C++
我有一个一般性的问题。希望你们中有人有好的方法来解决我的问题。如何初始化一个空向量?
据我所知,在编译时必须知道数组的大小,尽管对于向量来说是不同的。向量存储在堆中(例如:std::vector相对于c++中的std::array)
在我的程序中,我想让客户端决定如何精确的插值将被完成。这就是为什么我要用向量
问题是:为了安排清楚,我想写两个方法:
-
计算矢量和
系数的一种方法 为其他函数提供系数的一种方法。
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] = ...;
}
"nn"将在运行程序时由客户端给出。我的问题是如何初始化一个空向量?任何想法都很感激!
请注意,如果我调用另一个函数,根据它的定义返回一个向量作为返回值,我可以写
vector2= OneClass.OneMethod(SomeInputVector);
其中OneClass是一个类的对象,OneMethod是该类OneClass中的一个方法。
还请注意,当我在向量前面删除注释/**/时,它不再是全局的,并且在试图访问系数时抛出错误。
使用resize
:
vector1.resize(4, vector<double>(nn - 1));
使用resize()函数如下:
vector<vector<double>> v;
int f(int nn){
v.resize(4);
for(int i = 0; i < 4; i++){
v[i].resize(nn - 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] = ...;
}
不确定这是否是你想要的,但分配可能很有趣:
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.)
相关文章:
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 为什么一个向量上的多线程操作很慢
- 将一个向量插入另一个向量的某个位置
- 将指向给定子类的指针从一个向量复制到另一个向量
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- 如何在不复制的情况下将一个向量移动到另一个向量中
- 使用 std::transform 将向量向量 (a) 添加到另一个向量向量 (b)
- 如何按另一个向量的方向调整一个向量?
- 将字符向量复制到另一个向量
- 制作一对共享指针并推送一个向量
- 你能把一个向量<int64>投射到一个向量<uint8>吗
- 大家好,当一个类有一个向量作为它的数据成员时,为什么它的大小总是24?
- 为什么我们需要在优先级队列声明中添加一个向量作为参数?
- 如何将所有指针从一个向量移动到另一个向量?
- 将一个向量映射到不同的对,即使向量映射到每对时是不同的?
- 生成一个类Name_class并将两种数据类型存储在一个向量中
- 使用步骤c++构建一个向量
- 如何从另一个向量中的另一个第一元素减去向量中的第一元素
- 将一个向量对放在一个无序映射与一个映射中