STL中vector的存储是 线性的,可以看成动态数组的封装。
不太方便除末尾其他地方的插入操作。这样效率好低,所以比较纠结的!
要在vector中删除数据,可以用stl提供的函数,remove 或者 remove_if。
但是他的删除,比较特殊,他只是把删除的元素后面的数据前移。
自身大小没有变化,有时候 这么方法达不到自己的要求。
只好自己去加工下。下面是我的加工方法。
struct Test{
int i;
int j;
Test(int i,int j):i(i),j(j){}
bool operator ==(Test t){
return i ==t.i && j==t.j;
}
};
void Handle2()
{
vector<Test> c;
for(int i=0;i<100;i++)
c.push_back(Test(i,i));
vector<Test>::iterator it = remove(c.begin(),c.end(),Test(10,10));
vector<Test> d(c.begin(),it);
swap(d,c);
}
昨天在完成任务的时候,需要对vector删除,那时候有点困了,就是网上找找算了,但是找到的都是关于
remove怎么用,没有说到删除的具体的情况。所以今天有精神了,赶快写个。希望有人会需要。