问题的关键是
vector<int> logcc(ictm,-1)
根据C++标准的规定,logcc会在进入main函数之后初始化,也就是说logcc会在你初始化ictm全局变量之前就会构造。作为未初始化的全局变量,ictm的值此时为0,所以logcc的初始化等同如下:
vector<int> logcc(0,-1)
而在def_array()中,ictm已经赋值成10,所以会造成越界异常。
STL的东西忘的差不多了,不当之处请包涵。
补充:
在适当的地方写下:
logcc.resize(ictm)
比如
int preprocess()
{
ictm=10
logcc.resize(ictm)
vector<int>getVector()返回值为list的副本,而非list;所以,void pushNum(A* a)中:
第一行,a->getVector()创建一个vector<int>临时变量,临时变量调用push_back(1),list仍为空,之后临时变量销毁;
第二行,a->getVector()创建另一个vector<int>临时变量,由于list为空,该临时变量亦为空,之后临时变量调用at(0)越界出错。
int i,j// i,j要赋值吧cin>>i>>j
vector<vector<int>> coun(i,vector<int>(j));
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)