如何使用2d数组来声明C++中的array_view或array对象AMP

如何使用2d数组来声明C++中的array_view或array对象AMP

问题描述:

我试图使用数组(例如int myarray[2][3])来初始化array_view对象。我试过array_view<int, 2> a(2,3, myarray);但是这并不奏效。我也想用矢量做同样的事情。有任何想法吗?如何使用2d数组来声明C++中的array_view或array对象AMP

尝试array_view<int, 2> a(2, 3, *myarray);

编辑:

的(固定大小)向量的向量不能直接用来初始化一个的array_view对象。

但是你可以做这样的事情:

vector< vector<int> > my_multi_vector; // Fill my_multi_vector with data 
vector<int> my_composed_vector; 
for(int i = 0, ie = my_multi_vector.size(); i != ie; ++i) 
    my_composed_vector.insert(my_composed_vector.end(), my_multi_vector[i].begin(), my_multi_vector[i].end()); 
array_view<int, 2> a(2, 3, &my_composed_vector.front()); 
+0

谢谢工程。我将如何做这些向量? – drowdemon 2011-12-17 22:08:28

+0

你想用一个向量来构造一个int数组或一个array_view的向量吗? – Baltram 2011-12-17 22:11:10

+0

array_view向量载体 – drowdemon 2011-12-17 23:11:08

Baltram的方法是正确的。 你可以通过

array_view<int, 2> a(2, 3, my_composed_vector); 

更换

array_view<int, 2> a(2, 3, &my_composed_vector.front()); 

,使其更简单。

这里有一个更简单的方法:

int myarray[2][3]; 
int *p = &myarray[0][0]; 
array_view<int, 2> a(2, 3, p); 

感谢,