push_back矢量的矢量

时间:2011-06-03 00:25:32

标签: c++

我的矢量矢量有一些问题。在我的程序中,我为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值。你能否解决这个问题。

1 个答案:

答案 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> >,假设您总是有两个项目。