C ++ Вектор расщепления векторов на N-много подвекторов векторов

Leigh K спросил: 07 октября 2018 в 12:22 в: c++

У меня есть очень большой вектор векторов, который я хочу разделить на 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, поэтому решения, включающие в себя функции, являются приемлемыми;)


0 ответов