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