c++——reverse()函数的使用
使用方式:
reverse(vec.begin(),vec.end());
queue和stack容器不支持遍历操作,没有迭代器,所以不能使用算法里的反转函数,其类也没有提供反转的成员函数
因为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;
}