2011-06-03 251 views
-3

我得到了一些向量的矢量问题。在我的程序中,我定义了一个向量矢量的动态存储器,并调整了元素的大小和push_back。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)) 

并删除了调整大小的一部分。然后,当我得到了矢量矢量的打印输出时,我得到了所有的值。你能否纠正这个问题。而不是push_back

planes->at(i).at(0)=lenght; 
planes->at(i).at(1)=width; 

的push_back()

+5

请提供一个*完整的*,*可编译的*例子来证明问题。 – 2011-06-03 00:29:55

+0

你如何印刷它,你如何设置值? 'push_back'附加,你的初始向量从零开始。 – trutheality 2011-06-03 00:34:45

+0

@ oli,它太大了。 – niro 2011-06-03 01:18:09

回答

5

使用at增加了新的项目,所以你在每个矢量4项结束。您应该使用at()修改现有条目。

更好的是使用vector< pair<double,double> >,假设你总是有两个项目。

+0

@亚伦>>>谢谢;但是,我得到了一些错误按摩>>'结构std ::对<双,双>'没有成员命名'at'> - <<。你可否澄清vector >。 “对”的含义是什么?它应该是矢量字吗?我可以使用向量> * planes = new vector >与外向量的大小吗?你能不能也请评论我哪种方法是最好的,如果我使用push_back中的'at',它会加速处理。 (因为我有很长的数据集) – niro 2011-06-03 01:25:19