小甲鱼-C++快速入门笔记(49)之迭代器

引言

上节课我们的例子虽然工作得很好并也使用了一个标准的容器(向量容器),但它还是有个小问题,就是在遍历向量里的各个元素时,我们仍把它视为一个c++数组来对待.刚好我们的向量容器允许使用下标操作符来访问它的各个元素:name[x].

因为对容器里的各个元素进行遍历是一种十分常见的任务,所以应该有一种标准的方式来做这事,c++标准库提供的各种迭代器(iteraor)就是这么来的.

迭代器

迭代器是一种功能非常有限却非常实用的函数,提供一些基本操作符:*, ++, ==, !=, =.通过使用迭代器,当在程序里改用另一种容器的时候就用不着修改那么多的代码了.每一种容器都必须提供自己的迭代器,事实上每种容器都将其迭代器以嵌套的方式定义于内部.

#include <iostream>
#include <string>
#include <vector>

int main()
{
	std::vector<std::string> name;

	name.push_back("小甲鱼");
	name.push_back("小鱿鱼");

	std::vector<std::string>::iterator iter = name.begin();  //迭代器

	while(iter != name.end())
	{
		std::cout << *iter << "\n";
		iter++;
	}

	return 0;
}

name.begin()是让指针指向向量的开始位置,name.end()是判断指针是否到达向量的尾部.

注意:

(1)迭代器的真正价值在它们可以和所有的容器配合使用,而使用迭代器去访问容器元素的算法可以和任何一种容器配合使用.

(2)C++中迭代器有两种,const_iterator和iterator,const_iterator只能用于读取不能修改容器内元素.

算法案例

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

int main()
{
	std::vector<std::string> name;

	name.push_back("Larry");
	name.push_back("Rola");
	name.push_back("DingDing");
	name.push_back("JoyJoy");
	name.push_back("Mickael");
	name.push_back("Lucy");
	name.push_back("LiLei");

	std::sort(name.begin(), name.end());

	std::vector<std::string>::iterator iter = name.begin();  //迭代器

	while(iter != name.end())
	{
		std::cout << *iter << "\n";
		iter++;
	}

	return 0;
}

 

后期学习安排:

1、将c++入门这门课的学习笔记做成一个文档,以便平时归纳总结

2、将所有的示例代码重新自己实现一遍

3、接下来《数据结构与算法》

 

学习笔记:https://download.csdn.net/download/qq_30708445/11135557

课程示例和课后习题代码:https://download.csdn.net/download/qq_30708445/11135564

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值