vector迭代器使用几点注意及分析(二)

  今天写程序时发现,对于vector容器内元素是结构体时,迭代器的用法符合指针的用法

程序实例如下:

typedef struct tmpStruct
{
 int x;
 int y;
 double dd;
}ts;

 

vector<ts> vect;
 int i = 0;
 for(; i<5; ++i)
 {
  ts vectTs;
  vectTs.x = i;
  vectTs.y = i+2;
  vectTs.dd = (double)(i+3);
  vect.push_back(vectTs);
 }

 vector<ts>::iterator itera = vect.begin();
 for(; itera != vect.end(); ++itera)
 {
  //cout<<"("<<(*itera).x<<","<<(*itera).y<<","<<(*itera).dd<<")"<<endl;        //(1)
  cout<<"("<<itera->x<<","<<itera->y<<","<<itera->dd<<")   ";                         //(2)
  printf("%d/n", itera);
 }

 

 

程序运行结果如下:

  (0,2,3)   1244996
  (1,3,4)   1244996
  (2,4,5)   1244996
  (3,5,6)   1244996
  (4,6,7)   1244996

 

 

    经过实验验证,上述程序的(1)句和(2)句的运行结果是一样的,都是能够正常编译且运行的。从(2)句可以看出,itera的用法完全就是指针的用法,即通过“->”来取特定的成员。同时,‘(*itera).x’的用法也表明了,指针解引用后,得到的是个实际的对象,并非指针,因为是用“.”来取元素的。

    本例中仍用‘printf("%d/n", itera);’来打印itera的值。‘cout<<itera’仍和上次一样,编译没有通过。itera的值,也仍然没有变化,这一点,就不符合指针的概念了。

    但从此例中可以学习到,如何用迭代器来读写容器内结构体元素的成员了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值