定义一个Domain结构体以及容器、迭代器

struct Domain{
	int ID;
	string name
	string description;
};
vector <struct Domain> domainVec;
int main(){
	...
	vector <struct Domain>::iterator iter=domainVec.begin();
	...
return 0;
}

若要从迭代器iter中取出特定元素,可以使用

struct Domain domain=*iter;

指针相对于变量,可以通过删除指针,赋值NULL这种编程技巧,表示指针所指向的变量不可用或已失效。而变量就没有这种特性了,变量是永远有值的。
转化成指针,就需要使用如下形式

struct domain *pDomain=&*iter;

迭代器转换为指针的应用:将vector指定元素清空。

memset((void*)&*iter, 0, sizeof(*iter));

但是此时pDomain成为一个危险的指针,可以通过pDomain++pDomain--等形式访问domainVec容器中的内容,容易出现越界等错误。应该注意

cout<<"domain ID="<<p->ID<<endl;
p++;
p++;
...
cout<<"domain ID="<<p->ID<<endl;

在这里插入图片描述
迭代器对容器删除等操作。可能造成此指针指向的内容改变!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐