如何在C ++中将整数数组的向量转换为2D数组?

时间:2019-02-27 23:56:40

标签: c++ arrays c++11 vector

因此,我一直在看以下将向量转换为数组的文章,但是对于我的用例,这种方法似乎没有转换。

How to convert vector to array

vector<array<int, 256>> table; // is my table that I want to convert

// There is then code in the middle that will fill it

int** convert = &table[0][0] // is the first method that I attempted

convert = table.data(); // is the other method to convert that doesn't work

我相信我对数据类型后端的理解不足。任何帮助,将不胜感激

编辑:我已经将C样式的数组更改为C ++数组

2 个答案:

答案 0 :(得分:0)

假设使用C ++ 11,std::copy(&table[0][0], &table[0][0]+256*table.size(), &myArray[0][0]);

您可能会使用std :: copy。

我尚未测试过,但相信您可以这样做:

std::copy(<source obj begin>, <source obj end>, <dest obj begin>);

有效的参数:

{{1}}

有关此内容的更多信息: https://en.cppreference.com/w/cpp/algorithm/copy

答案 1 :(得分:0)

虽然有一条路线应该通过强制转换起作用,但我可以保证的最简单的方法是创建一个指向int的指针数组,该指针数组包含指向源{{ 1}}。

vector

示例:

// make vector of pointers to int
std::vector<int*> table2(table.size());

// fill pointer vector pointers to arrays in array vector
for (int i = 0; i < size; i++ )
{
    table2[i] = table[i];
}

由于对#include <vector> #include <iostream> #include <iomanip> #include <memory> constexpr int size = 4; // test by printing out void func(int ** arr) { for (int i = 0; i < size; i++ ) { for (int j = 0; j < size; j++ ) { std::cout << std::setw(5) << arr[i][j] << ' '; } std::cout << '\n'; } } int main() { std::vector<int[size]> table(size); // fill values for (int i = 0; i < size; i++ ) { for (int j = 0; j < size; j++ ) { table[i][j] = i*size +j; } } // build int ** std::vector<int*> table2(table.size()); for (size_t i = 0; i < size; i++ ) { table2[i] = table[i]; } //call function func(table2.data()); } 的要求,您似乎坚持这样做,可能的话请改用a simple matrix class