📜  如何反向遍历STL映射?

📅  最后修改于: 2021-05-30 20:26:08             🧑  作者: Mango

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等的更多准备工作,请参阅“完整面试准备课程”