C++如何很实用标准模板库(STL)中的map散列表?

2021年3月19日17:04:14 发表评论 759 次浏览

映射是关联容器, 以映射方式存储元素。每个元素都有一个键值和一个映射值。任何两个映射值都不能具有相同的键值。

与Map相关的一些基本函数:

begin()

–将迭代器返回到map中的第一个元素

end()

–将迭代器返回到映射图中最后一个元素之后的理论元素

size()

–返回map中的元素数量

max_size()

–返回map可以容纳的最大元素数

empty()

–返回map是否为空

对insert(键值, map值)

–向map添加新元素

remove(重复位置)

–在迭代器指向的位置删除元素

remove(常量g)

–从map中删除键值" g"

clear()

–从map上删除所有元素

#include <iostream>
#include <iterator>
#include <map>
  
using namespace std;
  
int main()
{
  
     // empty map container
     map< int , int > gquiz1;
  
     // insert elements in random order
     gquiz1.insert(pair< int , int >(1, 40));
     gquiz1.insert(pair< int , int >(2, 30));
     gquiz1.insert(pair< int , int >(3, 60));
     gquiz1.insert(pair< int , int >(4, 20));
     gquiz1.insert(pair< int , int >(5, 50));
     gquiz1.insert(pair< int , int >(6, 50));
     gquiz1.insert(pair< int , int >(7, 10));
  
     // printing map gquiz1
     map< int , int >::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< int , int > 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()–在map容器中插入具有特定键的元素。 。
  • C ++ STL中的map count()函数–返回map中键值为" g"的元素的匹配数。
  • 在C ++ STL中映射equal_range()–返回成对的迭代器。该对是指范围的边界, 该范围包括容器中所有具有等于k的键的元素。
  • C ++ STL中的map delete()函数–用于擦除容器中的元素。
  • C ++ STL中的map rend()函数–返回一个反向迭代器, 该迭代器指向映射中第一个键值对之前的理论元素(被认为是其反向端)。
  • 在C ++ STL中映射rbegin()函数–返回指向map的最后一个元素的反向迭代器。
  • C ++ STL中的map find()函数–在map中找到键值为" g"的元素返回迭代器(如果找到), 否则返回迭代器结束。
  • 在C ++ STL中映射crbegin()和crend()函数–crbegin()返回一个常量反向迭代器, 该迭代器引用映射容器中的最后一个元素。crend()返回一个常数反向迭代器, 该迭代器指向理论元素(在映射中的第一个元素之前)。
  • 在C ++ STL中映射cbegin()和cend()函数–cbegin()返回引用map容器中第一个元素的常量迭代器。cend()返回一个常量迭代器, 该迭代器指向在多图中最后一个元素之后的理论元素。
  • 在C ++ STL中映射emplace()–将键及其元素插入到map容器中。
  • 在C ++ STL中映射max_size()–返回map容器可以容纳的最大元素数。
  • 在C ++ STL中映射upper_bound()函数–将迭代器返回到等效于键值为" g"的映射值的第一个元素, 或者肯定会在映射中的键值为" g"的元素之后
  • C ++ STL中的map operator =–将容器的内容分配给其他容器, 以替换其当前内容。
  • 在C ++ STL中映射lower_bound()函数–将迭代器返回到等效于键值为" g"的映射值的第一个元素, 或者绝对不会在map中位于键值为" g"的元素之前。
  • 在C ++ STL中映射emplace_hint()函数–将键及其元素插入具有给定提示的map容器中。
  • 在C ++ STL中映射value_comp()–返回确定map中元素排序方式的对象(默认为" <")。
  • 在C ++ STL中映射key_comp()函数–返回确定map中元素排序方式的对象(默认为" <")。
  • C ++ STL中的map :: size()–返回map中的元素数。
  • C ++ STL中的map :: empty()–返回映射是否为空。
  • C ++ STL中的map :: begin()和end()–开始()将迭代器返回到map中的第一个元素。结束()将迭代器返回到映射图中最后一个元素之后的理论元素
  • C ++ STL中的map :: operator []–该运算符用于引用在运算符内部给定位置存在的元素。
  • C ++ STL中的map :: clear()–从map上删除所有元素。
  • C ++ STL中的map :: at()和map :: swap()–在()函数用于返回对与键k关联的元素的引用。交换()函数用于交换两个map的内容, 但是map的类型必须相同, 尽管大小可能会有所不同。

map上的最新文章

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请发表评论。

被认为是行业中最受欢迎的技能之一, 我们拥有自己的编码基础C ++ STL通过激烈的问题解决过程来训练和掌握这些概念。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: