vector让程序崩了
1维的时候这样用没问题,代码如下:
#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;}#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;}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;
[解决办法]
#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;}