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;
}