2014-02-21 53 views
0

如果我聲明一個boost :: numeric :: ublas :: vector aaa,然後調用方法aaa.erase_element(n),我得到一個具有相同大小,但n元素等於零。 你知道如何完全刪除元素以獲得較小尺寸的矢量? 我不能使用std :: vector的不幸......從boost中刪除元素:: numeric :: ublas :: vector

回答

0
template<class T> void remove(vector<T> &v, uint idx) 
{ 
    assert(idx < v.size()); 
    for (uint i = idx; i < v.size() - 1; i++) { 
     v[i] = v[i + 1]; 
    } 
    v.resize(v.size() - 1); 
} 

注:本作品,如果T是一個基本類型(INT,雙,等等),或者簡單的結構。如果T是指針 類型或包含指針,那麼您可能需要關注被引用對象的銷燬。或者也許使用ptr_vector。