📜  在C++标准模板库(STL)中映射

📅  最后修改于: 2021-05-30 05:51:22             🧑  作者: Mango

映射是关联容器,以映射方式存储元素。每个元素都有一个键值和一个映射值。任何两个映射值都不能具有相同的键值。
与Map相关的一些基本功能:
begin()–将迭代器返回到地图中的第一个元素
end()–返回迭代器,迭代器返回到映射中最后一个元素之后的理论元素
size()–返回地图中的元素数
max_size()–返回地图可以容纳的最大元素数
empty()–返回映射是否为空
对insert(keyvalue,mapvalue)–向地图添加一个新元素
擦除(迭代器位置)–删除迭代器指向的位置上的元素
delete(const g)–从映射中删除键值“ g”
clear()–从地图上删除所有元素

#include 
#include 
#include 
  
using namespace std;
  
int main()
{
  
    // empty map container
    map gquiz1;
  
    // insert elements in random order
    gquiz1.insert(pair(1, 40));
    gquiz1.insert(pair(2, 30));
    gquiz1.insert(pair(3, 60));
    gquiz1.insert(pair(4, 20));
    gquiz1.insert(pair(5, 50));
    gquiz1.insert(pair(6, 50));
    gquiz1.insert(pair(7, 10));
  
    // printing map gquiz1
    map::iterator itr;
    cout << "\nThe map gquiz1 is : \n";
    cout << "\tKEY\tELEMENT\n";
    for (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr) {
        cout << '\t' << itr->first
             << '\t' << itr->second << '\n';
    }
    cout << endl;
  
    // assigning the elements from gquiz1 to gquiz2
    map gquiz2(gquiz1.begin(), gquiz1.end());
  
    // print all elements of the map gquiz2
    cout << "\nThe map gquiz2 after"
         << " assign from gquiz1 is : \n";
    cout << "\tKEY\tELEMENT\n";
    for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) {
        cout << '\t' << itr->first
             << '\t' << itr->second << '\n';
    }
    cout << endl;
  
    // remove all elements up to
    // element with key=3 in gquiz2
    cout << "\ngquiz2 after removal of"
            " elements less than key=3 : \n";
    cout << "\tKEY\tELEMENT\n";
    gquiz2.erase(gquiz2.begin(), gquiz2.find(3));
    for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) {
        cout << '\t' << itr->first
             << '\t' << itr->second << '\n';
    }
  
    // remove all elements with key = 4
    int num;
    num = gquiz2.erase(4);
    cout << "\ngquiz2.erase(4) : ";
    cout << num << " removed \n";
    cout << "\tKEY\tELEMENT\n";
    for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) {
        cout << '\t' << itr->first
             << '\t' << itr->second << '\n';
    }
  
    cout << endl;
  
    // lower bound and upper bound for map gquiz1 key = 5
    cout << "gquiz1.lower_bound(5) : "
         << "\tKEY = ";
    cout << gquiz1.lower_bound(5)->first << '\t';
    cout << "\tELEMENT = "
         << gquiz1.lower_bound(5)->second << endl;
    cout << "gquiz1.upper_bound(5) : "
         << "\tKEY = ";
    cout << gquiz1.upper_bound(5)->first << '\t';
    cout << "\tELEMENT = "
         << gquiz1.upper_bound(5)->second << endl;
  
    return 0;
}
输出:
The map gquiz1 is : 
    KEY    ELEMENT
    1    40
    2    30
    3    60
    4    20
    5    50
    6    50
    7    10


The map gquiz2 after assign from gquiz1 is : 
    KEY    ELEMENT
    1    40
    2    30
    3    60
    4    20
    5    50
    6    50
    7    10


gquiz2 after removal of elements less than key=3 : 
    KEY    ELEMENT
    3    60
    4    20
    5    50
    6    50
    7    10

gquiz2.erase(4) : 1 removed 
    KEY    ELEMENT
    3    60
    5    50
    6    50
    7    10

gquiz1.lower_bound(5) :     KEY = 5        ELEMENT = 50
gquiz1.upper_bound(5) :     KEY = 6        ELEMENT = 50

Map的所有功能列表:

  • C++ STL中的map insert()–在地图容器中插入具有特定键的元素。 。
  • C++ STL中的map count()函数–返回与键中值为“ g”的元素匹配的次数。
  • C++ STL中的map equal_range()–返回对的迭代器。该对是指范围的边界,该范围包括容器中所有具有等于k的键的元素。
  • C++ STL中的map delete()函数–用于从容器中擦除元素。
  • C++ STL中的map rend()函数–返回一个反向迭代器,该迭代器指向map中的第一个键值对之前的理论元素(被认为是其反向端)。
  • C++ STL中的map rbegin()函数–返回一个反向迭代器,该迭代器指向地图的最后一个元素。
  • C++ STL中的map find()函数–如果找到,则返回映射中键值为’g’的元素的迭代器,否则返回迭代器结束。
  • C++ STL中的map crbegin()和crend()函数– crbegin()返回引用映射容器中最后一个元素的常量反向迭代器。 crend()返回一个常量反向迭代器,该迭代器指向映射中第一个元素之前的理论元素。
  • C++ STL中的map cbegin()和cend()函数– cbegin()返回一个常量迭代器,该迭代器引用了地图容器中的第一个元素。 cend()返回一个常数迭代器,该迭代器指向在multimap中最后一个元素之后的理论元素。
  • C++ STL中的map emplace()–在地图容器中插入键及其元素。
  • C++ STL中的map max_size()–返回地图容器可以容纳的最大元素数。
  • C++ STL中的map upper_bound()函数–将迭代器返回到等效于键值为’g’的映射值的第一个元素,或者肯定会在映射图中的键值为’g’的元素之后
  • map 运算符= in C++ STL –将容器的内容分配给其他容器,以替换其当前内容。
  • C++ STL中的map lower_bound()函数–将迭代器返回到等效于键值为’g’的映射值的第一个元素,或者绝对不会在映射中的键值为’g’的元素之前。
  • C++ STL中的map emplace_hint()函数–使用给定的提示将键及其元素插入到地图容器中。
  • C++ STL中的map value_comp()–返回确定地图元素排序方式的对象(默认为'<‘)。
  • C++ STL中的map key_comp()函数–返回确定地图元素排序方式的对象(默认为'<‘)。
  • C++ STL中的map :: size()–返回地图中的元素数。
  • C++ STL中的map :: empty()–返回映射是否为空。
  • C++ STL中的map :: begin()和end()– begin()将迭代器返回到地图中的第一个元素。 end()将迭代器返回到映射图中最后一个元素之后的理论元素
  • C++ STL中的map :: 运算符[] –此运算符用于引用在运算符内给定位置存在的元素。
  • C++ STL中的map :: clear()–从地图中删除所有元素。
  • C++ STL中的map :: at()和map :: swap()函数at()函数用于返回对与键k关联的元素的引用。 swap()函数用于交换两个地图的内容,但是地图的类型必须相同,尽管大小可能会有所不同。

地图上的最新文章

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”