有人可以帮助我编写将ID数组转换为2D向量的逻辑。

就像是

int array[] = {1, 4, 5, 7, 9, 3}; // dynamic array
vector <vector int> ex;


我现在如何才能将值放置在来自数组的ex ..中,以便形成3个值各自的2个向量?

我搜索了没有帮助的帮助,并尝试自己进行如下操作:

for(int i=0; i<2; i++)
{
        rowTemp_ex.assign(array, array+3));
 ex.push_back(rowTemp_ex);
 rowTemp_ex.erase(rowTemp_ex.begin() , rowTemp_ex.end());
}

最佳答案

首先,计算将有多少行向量。如果每个元素都包含三个元素,则总计为数组大小除以3。

template <typename T, std::size_t N>
std::size_t size(T(&)[N]) { return N; }

int number_of_rows = size(array) / 3;


现在创建一个具有相同数量行向量的向量,每个向量包含三个元素:

std::vector<std::vector<int> > v(number_of_rows, std::vector<int>(3));


然后遍历原始数组并使用整数除法和余数运算填充结果的每个单元格:

for(int i = 0; i < size(array); ++i) {
    v[i / 3][i % 3] = array[i];
}

关于c++ - 将一维数组转换为二维 vector c++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11223938/

10-14 19:13
查看更多