stl里反转函数(reverse)总结

13 篇文章 0 订阅

总结:
0.algorithm 里的反转函数接口:reverse(first,last) 参数为容器的迭代器起始位置和终止位置
1.string和vector和deque只能使用模板库算法里的反转函数
2.list可以使用算法里的和list类的reverse
3.stack和queue没有迭代器,自然不能使用算法里的reverse,其类也没有提供反转的成员函数
4.set和map的元素是按照键值排序的,不能修改键值,不可反转.

#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<list>
#include<queue>
#include<stack>
#include<deque>
#include<set>
#include<map>
using namespace std;

int main()
{
	string str("abcde");
	reverse(str.begin(), str.end());         //string使用<algorithm>里的reverse ,string类自身没有reverse成员函数
	cout << "string elem : ";
	for (int i = 0; i < str.size(); i++)
		cout << str.at(i) << "   ";
	cout << "\n\n";

	vector<int> v{ 1,2,3,4,5,6 };
	reverse(v.begin(), v.end());            //vector使用<algorithm>里的reverse,vector类自身也没有reverse成员函数
	cout << "vector elem : ";
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
		cout << *it << "   ";
	cout << "\n\n";
	
	list<int> l{ -1,-2,-3,-4,-5,-6 };
	reverse(l.begin(), l.end());           //list使用算法里的
	cout << "list elem : ";
	for(list<int>::iterator it=l.begin();it!=l.end();it++)
		cout << *it << "   ";
	cout << "\n";
	l.reverse();                         //list使用自身类的reverse成员函数
	cout << "list elem : ";
	for (list<int>::iterator it = l.begin(); it != l.end(); it++)
		cout << *it << "   ";
	cout << "\n\n";

	//queue和stack容器不支持遍历操作,没有迭代器,所以不能使用算法里的反转函数,其类也没有提供反转的成员函数
	queue<int> myq;
	myq.emplace(1);
	myq.push(2);
	
	stack<int> mys;
	mys.emplace(6);
	mys.push(7);

	deque<int> myd{ 2,4,6,8 };
	reverse(myd.begin(), myd.end());       //deque容器使用算法里的反转函数,deque类没有reverse成员函数
	cout << "deque elem : ";
	for (deque<int>::iterator it = myd.begin(); it != myd.end(); it++)
		cout << *it << "  ";
	cout << "\n\n";

	//因为set和map是关联式容器,在插入元素时就已经根据键值排好序了,如果反转会使元素变成无序状态,从而破会容器组织
	set<int> s;
	s.insert(10);
	s.insert(9);
	s.insert(8);
	//reverse(s.begin(), s.end());
	cout << "set elem : ";
	for (set<int>::iterator it = s.begin(); it != s.end(); it++)
		cout << *it << "  ";
	cout << "\n\n";

	map<int, string> m;
	m.insert(make_pair(0, "小王"));
	m.insert(make_pair(1, "小玲"));
	//reverse(m.begin(), m.end());
	cout << "map elem : " << "\n";
	for (map<int, string>::iterator it = m.begin(); it != m.end(); it++)
		cout << "key : " << it->first << "  value : " << it->second << endl;
	cout << "\n\n";

	system("pause");
	return 0;
}
  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值