2017-06-09 33 views
-4

我想僅將一個名爲l_nMinplacesPosvector的大小增加一個元素,並通過名爲m_nCurrentTime的變量的值填充新元素(準備通過一個變量共享它MPI功能,MPI_Bcast,到其他節點)。如何將矢量大小擴展一個元素並用變量填充

我想到了push_back()resize(),但我想知道這些是唯一的方法還是有更好的方法?

我知道這是錯誤的語法,但我想說明的想法:

void ParaStochSimulator::broad_casting(long j){ 
    std::cout << "i'm broad_casting" << std::endl; 
    l_nMinplacesPos = (*m_pcTransitionsInfo)[j]->GetManipulatedPlaces(); 
    double m_nCurrentTime; 
    l_anMarking.reserve(l_nMinplacesPos.size()); 

    //the vector that i want to extend: 
    l_nMinplacesPos.resize(1,m_nCurrentTime); //HERE 
    MPI_Bcast(&l_anMarking, l_nMinplacesPos.size(), MPI_DOUBLE, 0, MPI_COMM_WORLD); 
} 

任何幫助嗎?

+3

你知道'push_back',所以用它。這正是它的目的。不要在沒有理由的情況下混淆「預訂」。你的'resize'將矢量縮小到1,消除之前的任何東西。 – aschepler

回答

1

,如果你想使用矢量模板類的resize成員函數另一種解決辦法,就是做這樣的:

l_nMinplacesPos.resize(l_nMinplacesPos.size()+1, m_nCurrentTime); 

這裏您指示的是如您在問題中詢問的那樣只增加1個元素的大小,即當前大小+1:l_nMinplacesPos.size()+1

而在同一時間,你說的是調整大小成員函數填補元素與值:m_nCurrentTime

3

使用vector.push_back(value);

在你的情況,這將是:

l_nMinplacesPos.push_back(m_nCurrentTime);