2012-10-10 61 views
0

的N個我有std::vector<int> around,其中我需要更新(/改寫)起始於位置XÑ值。的std ::矢量更新與值

想象一下爲整個房間保留頂點的頂點列表。

隨機地移動椅子,只需更新 屬於椅子的頂點,因此需要更新整個房間頂點列表中的一組椅子頂點。

僞代碼:

void CVertexBuffer::Update(int iOffset, const std::vector<tVertex>& vVerticesList) 
{ 

    // Update VAO 
    ... 


    // 
    // Update m_vVertices (holding current vertices list) 
    // with vVerticesList (holding updated vertices data) 
    // starting at position iOffset 
    // The size of m_vVertices never changes 
    // 
    // The Dumb way (just for pseudocoding) 

    for(int a = iOffset; a < vVerticesList.size(); a++) 
    { 
    m_vVertices[a] = vVerticesList[a-iOffset]; 
    } 
} 

有什麼我可以使用內std::vector這樣做呢?

+3

「m_vVertices的大小永遠不會改變」 - 那麼它不叫「追加」,這就是所謂的「分配」,「覆蓋」等 –

+0

@SteveJessop - 是的,對不起,你是對的 - 我錯過了一個陰謀,將在一秒鐘內更新這個帖子。 – PeeS

+0

你不覺得有點困惑嗎? –

回答

5

您可以直接使用std::copy

std::copy(vVerticesList.begin(), vVerticesList.end(), 
             m_vVertices.begin() + iOffset); 
+0

這似乎回答他的問題,因爲他想問它。爲了回答他的問題(附加數據),矢量類本身具有以下功能:'m_vVertices.insert(m_vVertices.end(),vVerticesList.begin()+ iOffset,vVerticesList.end()) ;' –

+0

@Geoff_Montee不!插入元素,它不覆蓋現有的元素。 –

+0

是的,我知道。追加插入到最後。這就是爲什麼我說這個電話會回答這個問題,因爲他真的問過它。我沒有說這就是他想要的!你的答案肯定滿足他想要的 - 不是他要求的。 –