访问托管c ++中的多维列表

时间:2014-07-10 11:59:29

标签: .net generics c++-cli

在C#中我有类似的东西(我真正的问题有更多的维度):

        List<List<int>> testlist = new List<List<int>>();
        int yadda = testlist[0][0];

C ++中的等价物是什么?

我试过了:

List<List<int>^>^ testlist = gcnew List<List<int>^>();
int yadda = testlist[0][0];

但是这给出了错误“System :: Collections :: Generic :: List :: default [int] :: get [with T = System :: Collections :: Generic :: List ^]”无法用给定的方法调用参数列表参数类型是:(int,int)对象类型是:System :: Collections :: Generic :: List ^&gt; ^。

我实现它的唯一方法是

    List<List<int>^>^ testlist = gcnew List<List<int>^>();
int yadda = ((List<int>^)testlist[0])[0];

但是对于每个维度,使用强制转换操作符都不是非常易读。

那么有更好的方法在C ++中获取多维列表的元素吗?

1 个答案:

答案 0 :(得分:0)

如果你想要一个列表列表,你可以这样做:

list< list<int> > testlist = list< list<int> >(0,list<int>(0,0));

请注意最里面list<int>之后的空格。编写list<list<int> >而不是list<list<int>>是必要的,因为在第二种情况下,编译器会将其解释为运算符>>,因此会出错。

如果您想要访问[i][j]之类的元素,请改用std::vector