我的矢量矢量有一些问题。在我的程序中,我为vector的向量定义了一个动态内存,并对元素进行了resize和push_back。
vector<vector<double> > *planes = new vector<vector<double> >
planes->resize(s_list->size()); // size of another vector that i need to use
vector<int>::iterator s_no;
for(s_no=s_list->begin(), int i=0; s_no!=s_list->end(); s_no++, i++){){
//where i i the indices of planes
//some codes for computing length, width
planes->at(i).push_back(lenght);
planes->at(i).push_back(width);
}
它有效,我得到了我添加的所有值的打印。然后,我改变了新的矢量定义部分如下
vector<vector<double> > *planes =
new vector<vector<double> >(s_list->size(),vector<double>(2,0.0))
并删除了调整大小部分。然后,当我从矢量矢量打印出来时,我得到0值。你能否解决这个问题。
答案 0 :(得分:5)
使用at
代替push_back
planes->at(i).at(0)=lenght;
planes->at(i).at(1)=width;
push_back()会添加新项目,因此每个向量中最后有4个项目。您应该使用at()修改现有条目。
更好的是使用vector< pair<double,double> >
,假设您总是有两个项目。