2011-06-03 304 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