C++模板与STL(四):STL迭代器

注:本文不具有教学意义,仅作个人复习参考!

目录

1. 插入迭代器

1.1 反向插入迭代器:front_insert_iterator

1.2 前向插入迭代器:back_insert_iterator

1.3 插入迭代器:insert_iterator

2. 反向遍历迭代器

3. 流迭代器


1. 插入迭代器

前向插入:容器一定要有push_front()

后向插入:容器一定要有push_back()

1.1 反向插入迭代器:front_insert_iterator

1.2 前向插入迭代器:back_insert_iterator

1.3 插入迭代器:insert_iterator

	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	vector<int>vec(arr, arr + 10);
	deque<int>deq(arr, arr + 10);
	int brr[] = { 33,44,55,66,77 };
	list<int>li(brr, brr+5);
	//定义一个插入迭代器
	insert_iterator<vector<int>> iterInsert(vec, vec.begin() + 3);
	copy(li.begin(), li.end(), iterInsert);
	for (int elem : vec) {
		cout << elem << " ";
	}
	cout << endl;
	//头插入迭代器
	front_insert_iterator<deque<int>>front_it(deq);
	copy(li.begin(), li.end(), front_it);
	for (auto it : deq) {
		cout << it << " ";
	}
	cout << endl;
	//尾插入迭代器
	back_insert_iterator<deque<int>>back_it(deq);
	copy(li.begin(), li.end(), back_it);
	for (auto it : deq) {
		cout << it << " ";
	}
	cout << endl;

 

2. 反向遍历迭代器

	//int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	vector<int>v1(arr, arr + 10);
	vector<int>::reverse_iterator riter(v1.end());
	cout << "反向迭代器的数据" << *riter << endl;
	cout << "反向头迭代器的数据" << *v1.rbegin() << endl;

	vector<int>::iterator pos1;
	pos1 = find(v1.begin(), v1.end(), 6);
	vector<int>::reverse_iterator rpos1(pos1);
	cout << *pos1 << " " << *rpos1 << endl;

 

3. 流迭代器

	ostream_iterator<string>out1(cout);
	out1++ = "I";
	out1++ = "love";
	out1++ = "China";

	ofstream outfile;
	outfile.open("D:\\DesignPatterns\\Template_STL\\words.txt", ios::out);
	ostream_iterator<string>out2(outfile, " ");
	vector<string>v2;
	v2.push_back("I");
	v2.push_back("love");
	v2.push_back("STL");
	copy(v2.begin(), v2.end(), out2);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值