c++将vector迭代器转换为指针的方法
定义一个Domain结构体以及容器、迭代器struct Domain{int ID;string namestring description;};vector <struct Domain> domainVec;int main(){...vector <struct Domain>::iterator iter=domainVec;...return 0;}若要从迭代器
·
定义一个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;
迭代器对容器删除等操作。可能造成此指针指向的内容改变!
更多推荐
已为社区贡献1条内容
所有评论(0)