我用iterator犯的一个错误

本文通过一个具体的实例,详细解析了C++中STL vector容器的迭代器使用方法,包括常量迭代器的定义及如何正确遍历vector元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

昨天去一家公司上机测试,以前老是看一些STL的书籍,没有直接用来做过任何东西。所以一下子出丑了。

 

这样一个问题:

 

#include <vector>

#include <iostream>

void printArr(const std::<int>& a)

{

       for(std::vector<int>::iterator it = a.begin(); it != a.end(); it++)

              std::cout << a[it] << std::endl;

}

 

这段程序死活编译不过去,无奈有时间限制,我就改成了以下方法

#include <vector>

#include <iostream>

void printArr(const std::<int>& a)

{

       for(int i = 0; i < a.size(); i++)

              std::cout << a[i] << std::endl;

}

编译通过。但是实在是心里不爽,毕竟自己对这个东西没有很好的理解和使用。、

第一段代码犯了两个错误:

第一:作为const类型的参数a,要想遍历a需要适用const_iterator

第二:做为iterator,要访问它的数值用法是*it,而不是a[it]

所以正确的方法是:

#include <vector>

#include <iostream>

void printArr(const std::<int>& a)

{

       for(std::vector<int>::const_iterator it = a.begin(); it != a.end(); it++)

              std::cout << *it << std::endl;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值