首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求教复合容器, 运行报错解决思路

2012-02-27 
求教复合容器, 运行报错问题就是程序运行vector string 可以,但是运行vector vector string 类型就

求教复合容器, 运行报错
问题就是程序运行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;
        }
}
****************************************************************



[解决办法]
运行出错还是编译出错?

热点排行