C++将向量的向量拆分为向量的N个子向量
C++ Splitting vector of vectors into N-many sub-vectors of vectors
我有一个非常大的向量向量,我想通过函数将其拆分为N个子向量。然后,函数将对这些子向量执行一些算法例程,但不会返回任何内容。我知道我想将原始向量分割成多少个子向量(尽管在编译时不是(,也不知道如何在运行时在函数中创建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,因此包含其中功能的解决方案是可以接受的;(
在循环中拆分矢量
vector<vector<vector <double>>> sub_vectors;
for (std::size_t i(0); i < expidx_size; ++i) {
sub_vectors.emplace_back(vec.begin() + i * subvec_size, vec.begin() + (i + 1) * subvec_size);
}
下面是一个示例代码:
#include <iostream>
#include <vector>
int main() {
std::vector<std::vector<double>> 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} };
int expidx_size(5);
std::cout << "Size of expidx is: " << expidx_size << std::endl;
int subvec_size = vec.size() / expidx_size;
std::cout << "Size of each subvector is: " << subvec_size << std::endl;
std::vector<std::vector<std::vector <double>>> sub_vectors;
for (std::size_t i(0); i < expidx_size; ++i) {
sub_vectors.emplace_back(vec.begin() + i * subvec_size, vec.begin() + (i + 1) * subvec_size);
}
for (std::size_t i(0); i < expidx_size; ++i) {
for (const auto& sub_vector : sub_vectors[i]) {
std::cout << "{ ";
for (const auto& value : sub_vector) {
std::cout << value << " ";
}
std::cout << " }";
}
std::cout << std::endl;
}
return 0;
}
相关文章:
- C++将向量的向量拆分为向量的N个子向量
- 使用 C++ 将命令行参数拆分为参数/向量
- 将 std::大小为 m 的向量拆分为大小为 n 的向量
- 拆分字符数组并存储为向量
- 如何根据另一个向量中给出的索引拆分向量?
- 我在将字符串拆分为向量时遇到困难
- 将向量整数拆分为这些数字的整数
- 将字符串拆分为单个单词并将它们放置在向量中
- 在C 中拆分对象的向量
- 如何通过分隔符拆分字符串并将每个字符串放入不同的向量中
- 将向量拆分为多个数组/向量C++
- 使用向量和字符*拆分实现
- C 将字符串按空白空间将字符串拆分,除非将其封闭在引号中并存储在向量中
- 如何拆分 QString 并将一部分字符串保存在浮点数的向量中
- 将向量拆分为块 - 这是正确的吗?
- 拆分具有多个分隔符的字符串并将其保存到向量中
- 如何将向量拆分为子集
- 将向量拆分为向量
- 拆分需要在向量中写入哪些组件的字符串
- 使用向量按分隔符拆分字符串 - 如何按换行符拆分