【发布时间】:2018-11-01 02:02:28
【问题描述】:
我有一个非常大的向量向量,我想通过一个函数将其拆分为 N 个(向量的)子向量。然后该函数将对这些子向量执行一些算法例程,但不返回任何内容。我知道我想将原始向量向量拆分成多少个子向量(尽管不是在编译时),但我不确定如何在运行时函数。
通常,如果您将一个向量拆分为 n 个子向量,您将创建一个向量向量来存储每个子向量,尤其是当您要求这些子向量的范围超出您的循环时用于执行拆分。我是否正在寻找(因为缺乏更好的描述)一个“四维向量”来存储这些向量的子向量?
为了澄清,假设我有一个看起来像这样的向量:
vec = { {945,1,1.0882222739646},
{955,1,1.08030633720477},
{965,1,1.06095611392935},
{975,1,1.0736443050851},
{985,1,1.04649065403142},
{995,1,1.06294684603874},
{1005,1,1.065654589561},
{1015,1,1.0668922119373},
{1025,1,1.03109676962124},
{1035,1,1.08430139146623} }
我想将它分成 5 个(在运行时确定)向量的子向量,如下所示:
vec1 = { {945,1,1.0882222739646},
{955,1,1.08030633720477} }
vec2 = { {965,1,1.06095611392935},
{975,1,1.0736443050851} }
vec3 = { {985,1,1.04649065403142},
{995,1,1.06294684603874} }
vec4 = { {1005,1,1.065654589561},
{1015,1,1.0668922119373} }
vec5 = { {1025,1,1.03109676962124},
{1035,1,1.08430139146623} }
具体是怎么做的呢?到目前为止,我的功能如下所示:
void calc_frac_block (vector<vector <double> > conc_data, vector<int> expidx)
{
// First, we need to create n-many vectors of vectors corresponding to the size of expidx
int expidx_size = expidx.size();
cout << "Size of expidx is: " << expidx_size << endl;
// Now we find the size of each subvector of vectors by diving conc_data by expidx_size
int subvec_size = conc_data.size() / expidx_size; // Will always be a whole number
cout << "Size of each subvector is: " << subvec_size << endl;
// NOW I HAVE THE NUMBER OF SUB-VECTORS OF VECTORS AND THE SIZE OF EACH... HOW TO PROCEED?
}
任何指针都会有所帮助。我正在使用 C++11,因此涉及其中功能的解决方案是可以接受的 ;)
【问题讨论】:
-
是 n 个子向量中每个子向量中元素的个数
-
expidx 是向量的原始向量被拆分成的子向量的数量,subvec_size 是每个向量中由拆分产生的向量的数量。
-
subvec_size 值是否正确?
-
从到目前为止传递给函数的内容来看,epidx 和 subvec_size 都产生了我想要的正确值。