memset是以字节为单位填充
今天做dijkstra卡在了memset上,
bool *S = new bool[n];//最短路径顶点集
memset(S, 0, sizeof(S));
以为这样就可以把S[i]都置为0,但只有前四个是0.
这是因为sizeof(S)是一个bool*类型的,是四个字节,所以就memset就填充了四个字节
有bool类型是一个字节,所以前四个S[i]是0,后面就不是了
如果是int *S = int bool[n];
memset(S, 0, sizeof(S));
for(int i=0;i<n;i++)
{
cout<<S[i];
}
只有第一个为0,这是因为int型是四个字节