2014-02-21 2 views
0

boost :: numeric :: ublas :: vector aaa를 선언하고 나중에 aaa.erase_element (n) 메서드를 호출하면 동일한 크기는 같지만 n 요소는 0과 같습니다. 더 작은 크기의 벡터를 얻기 위해 요소를 완전히 제거 할 수있는 방법을 알고 있습니까? 나는 표준 : 불행하게도 벡터를 ... 사용할 수 없습니다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를 사용하십시오.