遇到STL我就头疼,请教两个问题
typedef vector<bool> BinaryMat;
typedef vector<bool>* LPBinaryMat;
问题1:下面两种方式都能通过编译,有什么不同呢?
LPBinaryMat pBMat = new BinaryMat(nWidth*nHeight);
LPBinaryMat pBMat = new BinaryMat[nWidth*nHeight];
问题2,下面两种取内容的方式,为什么场合不同编译有时候报错,有时候不报
//code 1
BinaryMat SpinFilterB87(int nWidth,BinaryMat* lpBits,BOOL bIterance=FALSE);
LPBinaryMat pBMat = new BinaryMat[nWidth*nHeight];
int i,j;
for (i=3;i<nHeight-3;i++)
{
for (j=3;j<nWidth-3;j++)
{
*(pBMat+i*nWidth+nHeight) = ::SpinFilterB87(nWidth,lpPoints+i*nWidth+j);
//(*pBMat)[i*nWidth+nHeight] = ::SpinFilterB87(nWidth,lpPoints+i*nWidth+j);
//报错
}
}
//code 2
int G[8][7];
BinaryMat SpinFilterB87(int nWidth,BinaryMat* lpBits,BOOL bIterance/*=FALSE*/)
{
for (i=-3;i<4;i++)
{
G[0][i+3]=(*lpBits)[i]; //=*(lpBits+i);报错
G[4][i+3]=(*lpBits)[nByteWidth*i];
如果您确信是我写错了,请告诉我,我在试试。谢谢。