2010-01-30 112 views
2

我想在C++中建立一个2维数组,而我不知道我会有多少行。下面是一些代码:C++中的动态二维数组?

在头文件:

class model 
{ 
     ... ... 

    float vertices[][3]; 

     ... ... 
} 

而在.cpp文件:

istringstream iss(str); 
for (int i = 0; i <=2; i++) 
    { 
     iss >> vertices[counter][i]; 
    } 

这是处理它一个适当的方式?我遇到了分段错误,我只想确保它不是由我使用数组的方式引起的。还有更好的方法来处理这个,谢谢。

回答

5

您需要使用指针,或者在不知道大小时使用可动态调整大小的容器,如std::vector

+1

回答我建议包装一个单* *载体。使用数学从2D索引计算它的一维索引。通常更简单,更快。 – GManNickG 2010-01-30 06:32:52

+0

@GMan:我不会这么说,因为其中一个维度是固定的(3)。 – kennytm 2010-01-30 06:36:09

+0

@GMan:但是如果应用程序需要像“在第2行有东西时插入第1行”那样的操作,那么移动所有内容会变得非常昂贵。实际上,如果嵌套矢量是交错的,它将变得很昂贵... – 2010-01-30 06:36:55

1

Type variable[];出现在结构/类定义实际上指zero-length array其是GCC延伸(ISO C++不允许这样),用于与在编译时已知一个可变长度的柔性阵列。

(你应该使用std::vectornew Type[n]如其他人所说。)