从boost :: numeric :: ublas :: vector中删除元素

时间:2014-02-21 15:39:20

标签: boost vector erase

如果我声明一个boost :: numeric :: ublas :: vector aaa然后调用方法aaa.erase_element(n),我会得到一个大小相同的向量,但n元素等于零。 你知道我怎样才能完全删除元素以获得更小尺寸的矢量? 不幸的是我不能使用std :: vector ......

1 个答案:

答案 0 :(得分: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,double等)或简单结构,则此方法有效。如果T是指针 类型,或包含指针,那么你可能需要看看被引用对象的破坏。或者也许使用ptr_vector。