C++ Primer 第十章 10.4 再探迭代器 练习和总结

本文探讨了C++ Primer中的迭代器概念,重点在于插入迭代器(back_inserter、front_inserter、inserter)、iostream迭代器(istream_iterator和ostream_iterator)和反向迭代器。讲解了它们的工作原理、使用场景及操作方法,并通过练习加深理解。
摘要由CSDN通过智能技术生成

10.4 再探迭代器

标准库的头文件iterator,除了定义了容器的迭代器之外,还定义了一些额外的迭代器。

  1. 插入迭代器 insert iterator
  2. 流迭代器 stream ierator
  3. 反向迭代器 reverse iterator
  4. 移动迭代器 移动迭代器在13.6中,解引用移动迭代器将得到一个右值引用。

接下来总结每个迭代器具体是做什么的

10.4.1插入迭代器

插入迭代器是一种迭代器适配器,其接受一个容器,生成一个迭代器,对该迭代器赋值时,这个迭代器将调用容器操作将赋值的元素添加进容器

插入迭代器有三个。
1.back_inserter
2.front_inserter
3.inserter

backi_inserter调用容器的push_back()操作,前提是容器有push_back()操作,添加之后的元素为顺序

front_inserter()调用容器的push_front()操作,前提是容器有push_front()操作,添加之后的元素为逆序

inserter()需要指定容器和插入的位置,指向insert操作,inserter将元素插入到指定的元素之前,所以添加之后的元素为顺序

插入迭代器支持的操作:
在这里插入图片描述
其实只有赋值有用,其余的操作返回的都是插入迭代器自己。

练习

10.26
有什么不同指出,已经在上面写出来了

10.27

vector<string> vec = {
    "a","c","a","e123","1ca","aaa","aaa","z123","q","casd123","asdas" };
	deque<string> dq;
	
	std::sort(vec.begin(),vec.end());
	std::unique_copy(vec.begin(),vec.end(),std::back_inserter(dq));
	for (const auto& item:dq) {
   
		cout << item << endl;
	}

	cout << "size:" << dq.size() << endl;

10.28
错误记录:这里我犯了一个错误就是,认为传给算法的迭代器在每次赋值的使用都调用一次,所以inserter传入begin(),每次都在首元素之前插入,那插入的元素不就是逆序吗,但是其实是只在调用时begin()指的还是首元素或者最后一个元素的下一位置,在插入了其他的元素之后,它就不再是首元素了。

vector<int> vec = {
   1,2,3,4,5,6,7,8,9};
	vector<int> vec_1;
	list<int> lst_1;
	deque<int> dq_1;
	//顺序
	std::copy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值