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

vector让程序崩了,该如何解决

2012-02-13 
vector让程序崩了1维的时候这样用没问题,代码如下:C/C++ code#include iostream#include vector#inclu

vector让程序崩了
1维的时候这样用没问题,代码如下:

C/C++ code
#include <iostream>#include <vector>#include <string>using namespace std;int main(){    vector<string> vec;    vec.push_back("aa");    vec[0].append("cc");    vec.push_back("bb");    cout << "vec[0] = " << vec[0] << endl;    cout << "vec[1] = " << vec[1] << endl;    return 0;}


但是维度增加能编译通过,运行就崩,代码如下:
C/C++ code
#include <iostream>#include <vector>#include <string>using namespace std;int main(){    vector<vector<vector<string> > >vec;    vec[0][0].push_back("aa");    vec[0][0][0].append("cc");    vec[0][1].push_back("bb");    cout << "vec[0] = " << vec[0][0][0] << endl;    cout << "vec[1] = " << vec[0][1][0] << endl;    return 0;}

表示很困惑,请高手传道授业解惑 :)


[解决办法]
vec[0][0].
你push过么?就能[0]访问?
[解决办法]
下标访问时要确定vector里面的元素数量足够。你的vector里都没有元素。
[解决办法]
C/C++ code
vector<vector<vector<string> > >vec;vector<vector<string> >vectemp;vector<string>temp;temp.push_back("thisvec");vectemp.push_back(temp);vec.push_back(vectemp);cout << "vec[0] = " << vec[0][0][0] << endl;
[解决办法]
C/C++ code
#include <iostream>#include <vector>#include <string>using namespace std;int main(){    vector<string> vec1;    vector<vector<string> > vec2(2,vec1);    vector<vector<vector<string> > > vec(1,vec2);    //用下标访问元素之前,必须保证下标所指向的位置有元素(元素可以先不赋值,是有默认值的)    vec[0][0].push_back("aa");    vec[0][0][0].append("cc");    vec[0][1].push_back("bb");    cout << "vec[0] = " << vec[0][0][0] << endl;    cout << "vec[1] = " << vec[0][1][0] << endl;    return 0;} 

热点排行