如何在c ++向量中返回值变化的索引?

时间:2016-11-22 14:14:53

标签: c++ vector

对于模糊的标题感到抱歉,我不确定如何说出来。

说我有一个矢量:

vector<int> vec{{
    1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14
}};

和错过数字后出现的相应位置向量(如5到7)。

vector<int> positions{{
    1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1
}};

我如何返回从每个1运行的2D向量,直到但不包括下一个:例如

1 2 3 4 5
7 8 9 10
12 13 14

在此先感谢,我发布了我的尝试,但他们都是盲目的。我知道这是一个奇怪的结构...

1 个答案:

答案 0 :(得分:0)

有几种方法可以解决这个问题,但我相信这应该可行:

std::vector<std::vector<int>> vec2D;
int index = -1;
// Identify the indices of the position vector and use that to identify the 
// correct indices of the vec. 
for (int i = 0; i != position.size(); ++i)
{
    // if the value at i of the position vector is 0, 
    // push_back the value at i of the vec vector into
    // the correct vector of vector.
    if (0 == position[i])
    {
        vec2D[index].push_back(vec[i])
    }
    else if (1 == position[i])
    {
        ++index; //increment to the next vector
        std::vector<int> temp;
        vec2D.push_back(temp);
        vec2D[index].push_back(vec[i])  
    }
}