c++将vector迭代器转换为指针的方法

定义一个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;

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

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

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

  • 2
    点赞
  • 2
    收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:鲸 设计师:meimeiellie 返回首页
评论 1

打赏作者

百口可乐__

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值