std::vector
场景:
1.std::vector需要根据条件删除特定的元素。
2.std::vector的iterator在删除后这个iterator是失效的,所以不能直接++iter,这时候只能取erase的返回值下一个iterator作为有效的iter使用.
#include <stdio.h>
#include <assert.h>
#include <vector>
typedef struct closure closure;
struct closure
{
int isAllow;
};
int main(int argc, char *argv[])
{
std::vector<closure*> infos;
closure c1;
c1.isAllow = 1;
closure c2;
c2.isAllow = 0;
closure c3;
c3.isAllow = 1;
closure c4;
c4.isAllow = 0;
closure c5;
c5.isAllow = 0;
infos.push_back(&c1);
infos.push_back(&c2);
infos.push_back(&c3);
infos.push_back(&c4);
infos.push_back(&c5);
pr