c++动态布尔型数组问题

来源:百度知道 编辑:UC知道 时间:2024/05/19 21:26:07
我写了一段代码(已经#include了iostream.h):
short total;
cin >>total;
bool *array = new bool [total*total];
//用array[i*j]的形式替代复杂的array[i][j]形式
for (short i=1; i<=total; i++)
for (short j=1; j<=total; j++)
cin >>Link [i*j];
};
在编译(用vc++ 6.0)时,在第7行出现错误:
error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'bool' (or there is no acceptable conversion)
这是怎么会回事? 我不用动态的就没事,但必须按照实际输入数目分配数组,而链表太麻烦
那位高手帮忙解决这个问题?
写错了
第7行的Link应改为array

我用这个二维数组,是为了描述一个图,其中结点的个数是根据实际情况确定的

把Link [i*j]改成Link [i*total+j] 即可!

Link在哪里定义的?

感觉你的嵌套循环有问题,有的地方没赋值,有的重复赋值了。以array[6*6]为例:
1 2 3 4 5 6
2 4 6 8 10 12
3 6 9 12 15 18
4 8 12 16 20 24
5 10 15 20 25 30
6 12 18 24 30 36

我不知道你的代码就是为了这样赋值,还是只给array[0]--array[35]都赋值,但是循环的时候array[36]已经越界了

这里的错误并不是动态分配数组造成的,而是cin根本就无法输入bool类型的数据,从它显示的错误就可以看出。还有数组的下标从0到长度减1,显然i*j作为数组的下标最终导致数组访问越界。不如把bool改成int,输入0表示false,输入1表示true。