Map按键的排序顺序存储元素。现在,如果我们想以相反的顺序遍历它,我们将使用map的reverse_iterator。
句法:
map::reverse_iterator iterator_name;
映射的反向迭代器按增量向后移动。因此,我们将reverse_iterator指向map的最后一个元素,然后继续递增直到它到达第一个元素。为此,我们将使用std :: map的2个成员函数,即
1. rbegin():它返回指向map的最后一个元素的reverse_iterator。
2. rend():它返回指向map的第一个元素的reverse_iterator。
现在以反向顺序遍历,我们将使用reverse_iterator在b / w rbegin()和rend()范围内进行迭代。
映射中的反向迭代:
例子:
Input: (10, "geeks"), (20, "practice"), (5, " contribute")
Output : (20, "practice"), (10, "geeks"), (5, " contribute")
// C++ program makes a map to iterate
// elements in reverse order.
#include
using namespace std;
int main()
{
// Creating & Initializing a map of String & Ints
map mymap;
// Inserting the elements one by one
mymap.insert(make_pair(10, "geeks"));
mymap.insert(make_pair(20, "practice"));
mymap.insert(make_pair(5, "contribute"));
// Create a map reverse iterator
map::reverse_iterator it;
// rbegin() returns to the last value of map
for (it = mymap.rbegin(); it != mymap.rend(); it++) {
cout << "(" << it->first << ", "
<< it->second << ")" << endl;
}
return 0;
}
输出:
(20, practice)
(10, geeks)
(5, contribute)
我们还可以使用auto来避免记住复杂的语法。
// C++ program makes a map to iterate
// elements in reverse order with simpler
// syntax
#include
using namespace std;
int main()
{
// Creating & Initializing a map of String & Ints
map mymap;
// Inserting the elements one by one
mymap.insert(make_pair(10, "geeks"));
mymap.insert(make_pair(20, "practice"));
mymap.insert(make_pair(5, "contribute"));
// rbegin() returns to the last value of map
for (auto it = mymap.rbegin(); it != mymap.rend(); it++) {
cout << "(" << it->first << ", "
<< it->second << ")" << endl;
}
return 0;
}
输出:
(20, practice)
(10, geeks)
(5, contribute)
多重地图中的反向迭代:
Multimap与map相似,只是多个元素可以具有相同的键。在这种情况下,键值和映射值对必须是唯一的,而不是每个元素都是唯一的。
例子:
Input : (10, "geeks"), (20, "practice"), (5, "contribute"),
(20, "van"), (20, "watch"), (5, "joker")
Output: (20, "watch"), (20, "van"), (20, "practice"),
(10, "geeks"), (5, "joker"), (5, "contribute")
// C++ program makes a multimap to store
// elements in descending order.
#include
using namespace std;
int main()
{
// Creating & Initializing a multimap
// of Ints & String
multimap mymap;
// Inserting the elements one by one
mymap.insert(make_pair(10, "geeks"));
mymap.insert(make_pair(20, "practice"));
mymap.insert(make_pair(5, "contribute"));
// Duplicates allowed
mymap.insert(make_pair(20, "van"));
mymap.insert(make_pair(20, "watch"));
mymap.insert(make_pair(5, "joker"));
for (auto it = mymap.rbegin(); it != mymap.rend(); it++) {
cout << "(" << it->first << ", "
<< it->second << ")" << endl;
}
return 0;
}
输出:
(20, watch)
(20, van)
(20, practice)
(10, geeks)
(5, joker)
(5, contribute)
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。