一个关于C++问题的求助

来源:百度知道 编辑:UC知道 时间:2024/05/04 16:32:12
//最少换乘次数的公交站点
void leastChangeBus(string lstart,string lend)
{
vector<string> leastLine; //最少的路线
set<string>::iterator setPos,setPos1,setPos2,it;
set<string> startSet; //起点的集合
set<string> endSet; //终点站可到的集合
set<string> intersectionSet;
stack<string> searchNode;
int changeNum=0;
char busLineTable[site.size()][MAX_LINE]; //公交路线网络图表
set<string>::const_iterator nodeposx;
int x;
for(nodeposx=site.begin(),x=0;nodeposx!=site.end();nodeposx++,x++)
for(int i=0;i<MAX_LINE;i++)
if (find(busLine[i].upLine.begin(), busLine[i].upLine.end(), *nodeposx) != busLine[i].upLine.end())
busLineTable[x][i]=1;
else
busLineTable[x][i]=0;
cout<<"起点站:"<<lstart<<endl;
cout<<"终点站:"<<lend<<endl;

调试的时候出现这样的错误,期待高人解救
C:\Documents and Settings\Administrator\桌面\

char busLineTable[site.size()][MAX_LINE]; 这句有问题,二维数组的长度必须是常量,可通过动态分配数组解决问题。

分配内存:
char **busLineTable = new char *[site.size()];
for (int i = 0; i < site.size(); ++i)
busLineTable = new char[MAX_LINE];

释放内存:
for (int i = 0; i < site.size(); ++i)
delete[] busLineTable[i];

delete[] busLineTable;

这几个错误都是数组定义的错误

char busLineTable[site.size()][MAX_LINE]; //公交路线网络图表
给MAX_LINE初始值,例如:const int MAX_LINE=100;二维数组最右边的维数不能省略的

C:\Documents and Settings\Administrator\桌面\BUSLINE\BUSLINE\Busline.cpp(351) : error C2057: expected constant expression
Busline.cpp这个文件的351行,希望是个常量表达式,实际上肯定不是

C:\Documents and Settings\Administrator\桌面\BUSLINE\BUSLINE\Busline.cpp(351) : error C2466: cannot allocate an array of constant size 0
Busline.cpp这个文件的351行,不能分配大小为0的数组

C:\Documents and Settings\Administrator\桌面\BUSLINE\BUSLINE\Bu