求教复合容器, 运行报错
问题就是程序运行vector <string> 可以,但是运行vector <vector <string> > 类型就出现 XXXXX has encountered a problem and needs to close. We are sorry for the inconvenience.
我设了3个变量如下:
vector <string> words_vec;
vector <vector <string> > word_group_vec;
vector <vector <vector <string> > > group_in_group_vec;
然后设置了一个循环:
for(int j=0;j <words_vec.size();j++){
cout < < "size of words_vec[ " < <j < < "] = " < <words_vec[j].size() < <endl;
get_sentence(words_vec[j],word_group_vec[j]);
}
get_group(string &str,vector <string> &vec)就是把一个word分成很多的小word,存入word_group_vec. 编译时无报错,但是运行时一到str.substr(m,n)==vec[x]判断时就报错,证明可能是vector嵌套类型在分配内存时有问题. 请高手指点啊,怎么不行呢?
请高手指教, 谢谢
****************************************************************
get_group()定义如下:
void get_group(string &str,vector <string> &vec){
bool exist = false;
if(0==str.size()|| "e "==str) cout < < "{e} " < <endl;
else{
cout < < "{ ";
for(int m=0;m <str.size();m++){
for(int n=1;n <=str.size()-m;n++){
for(int x=0;x <vec.size();x++)
{if(str.substr(m,n)==vec[x]) exist = true;}
if(str.size()-1==m && str.size()-m==n){
if (true != exist){
cout < <str.substr(m,n);
vec.push_back(str.substr(m,n));
}
}
else{
if (true != exist){
cout < <str.substr(m,n) < < ", ";
vec.push_back(str.substr(m,n));
}
}
exist=false;
}
}
cout < < "} " < <endl;
}
}
****************************************************************
[解决办法]
运行出错还是编译出错?