C++ 学习小程序之 map 的用法

简介: 1. map::at 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int main(){ 7 map mymap = { 8 {"alpha", 0}, ...

1. map::at

 1 #include <iostream>
 2 #include <string>
 3 #include <map>
 4 using namespace std;
 5 
 6 int main(){
 7     map<string, int> mymap = {
 8         {"alpha", 0},
 9         {"beta", 0},
10         {"gamma", 0}};
11 
12     mymap.at("alpha") = 10;
13     mymap.at("beta") = 20;
14     mymap.at("gamma") = 30;
15 
16     for (auto& x:mymap){
17         cout<<x.first<<": "<<x.second<<'\n';
18     }
19 
20     return 0;
21 }

 

2. make_pair example

 1 // make_pair example
 2 #include <utility>      // std::pair
 3 #include <iostream>     // std::cout
 4 
 5 int main () {
 6   std::pair <int,int> foo;
 7   std::pair <int,int> bar;
 8 
 9   foo = std::make_pair (10,20);
10   bar = std::make_pair (10.5,'A'); // ok: implicit conversion from pair<double,char>
11 
12   std::cout << "foo: " << foo.first << ", " << foo.second << '\n';
13   std::cout << "bar: " << bar.first << ", " << bar.second << '\n';
14 
15   return 0;
16 }

 

3. map::begin/end

 1 // map::begin/end
 2 #include <iostream>
 3 #include <map>
 4 
 5 int main ()
 6 {
 7   std::map<char,int> mymap;
 8 
 9   mymap['b'] = 100;
10   mymap['a'] = 200;
11   mymap['c'] = 300;
12 
13   // show content:
14   for (std::map<char,int>::iterator it=mymap.begin(); it!=mymap.end(); ++it)
15     std::cout << it->first << " => " << it->second << '\n';
16 
17   return 0;
18 }

4.   map::insert(C++98)

 1 // map::insert(C++98)
 2 #include <iostream>
 3 #include <map>
 4 using namespace std;
 5 int main ()
 6 {
 7     map<char,int> mymap;
 8 
 9     // first insert function version (single parameter):
10     mymap.insert ( pair<char,int>('a', 100) );
11     mymap.insert ( pair<char,int>('z', 200) );
12 
13     pair<map<char, int>::iterator, bool> ret;
14     ret = mymap.insert (pair<char,int>('z',500));
15     if (ret.second == false){
16         cout<<"element 'z' already existed";
17         cout<<"with a value of " << ret.first->second << '\n';
18     }
19 
20     //second insert function version (with hint position):
21     map<char, int>::iterator it = mymap.begin();
22     mymap.insert (it, pair<char, int>('b',300)); // max efficiency inserting
23     mymap.insert (it, pair<char, int>('c',400)); // no max efficiency inserting
24 
25     //third insert function version (range insertion):
26     map<char,int> anothermap;
27     anothermap.insert(mymap.begin(),mymap.find('c'));
28 
29     // showing contents:
30     cout<<"mymap contains: \n";
31     for (it = mymap.begin(); it!= mymap.end(); ++it)
32         cout<<it->first<<"=>"<<it->second<<'\n';
33 
34     cout<<"anothermap contains: \n";
35     for(it=anothermap.begin(); it!=anothermap.end();++it)
36         cout<<it->first<<"=>"<<it->second<<'\n';
37 
38     return 0;
39 }

 

相关文章
|
5月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
376 1
|
编译器 C++ 容器
【c++丨STL】基于红黑树模拟实现set和map(附源码)
本文基于红黑树的实现,模拟了STL中的`set`和`map`容器。通过封装同一棵红黑树并进行适配修改,实现了两种容器的功能。主要步骤包括:1) 修改红黑树节点结构以支持不同数据类型;2) 使用仿函数适配键值比较逻辑;3) 实现双向迭代器支持遍历操作;4) 封装`insert`、`find`等接口,并为`map`实现`operator[]`。最终,通过测试代码验证了功能的正确性。此实现减少了代码冗余,展示了模板与仿函数的强大灵活性。
333 2
|
存储 安全 编译器
第二问:C++中const用法详解
`const` 是 C++ 中用于定义常量的关键字,主要作用是防止值被修改。它可以修饰变量、指针、函数参数、返回值、类成员等,确保数据的不可变性。`const` 的常见用法包括:
|
存储 算法 C++
【c++丨STL】map/multimap的使用
本文详细介绍了STL关联式容器中的`map`和`multimap`的使用方法。`map`基于红黑树实现,内部元素按键自动升序排列,存储键值对,支持通过键访问或修改值;而`multimap`允许存在重复键。文章从构造函数、迭代器、容量接口、元素访问接口、增删操作到其他操作接口全面解析了`map`的功能,并通过实例演示了如何用`map`统计字符串数组中各元素的出现次数。最后对比了`map`与`set`的区别,强调了`map`在处理键值关系时的优势。
665 73
|
算法 网络安全 区块链
2023/11/10学习记录-C/C++对称分组加密DES
本文介绍了对称分组加密的常见算法(如DES、3DES、AES和国密SM4)及其应用场景,包括文件和视频加密、比特币私钥加密、消息和配置项加密及SSL通信加密。文章还详细展示了如何使用异或实现一个简易的对称加密算法,并通过示例代码演示了DES算法在ECB和CBC模式下的加密和解密过程,以及如何封装DES实现CBC和ECB的PKCS7Padding分块填充。
368 4
2023/11/10学习记录-C/C++对称分组加密DES
|
C++ 开发者
C++学习之继承
通过继承,C++可以实现代码重用、扩展类的功能并支持多态性。理解继承的类型、重写与重载、多重继承及其相关问题,对于掌握C++面向对象编程至关重要。希望本文能为您的C++学习和开发提供实用的指导。
216 16
|
存储 C++ 容器
【C++】map、set基本用法
本文介绍了C++ STL中的`map`和`set`两种关联容器。`map`用于存储键值对,每个键唯一;而`set`存储唯一元素,不包含值。两者均基于红黑树实现,支持高效的查找、插入和删除操作。文中详细列举了它们的构造方法、迭代器、容量检查、元素修改等常用接口,并简要对比了`map`与`set`的主要差异。此外,还介绍了允许重复元素的`multiset`和`multimap`。
408 3
【C++】map、set基本用法
|
存储 算法 C++
【C++】unordered_map(set)
C++中的`unordered`容器(如`std::unordered_set`、`std::unordered_map`)基于哈希表实现,提供高效的查找、插入和删除操作。哈希表通过哈希函数将元素映射到特定的“桶”中,每个桶可存储一个或多个元素,以处理哈希冲突。主要组成部分包括哈希表、哈希函数、冲突处理机制、负载因子和再散列,以及迭代器。哈希函数用于计算元素的哈希值,冲突通过开链法解决,负载因子控制哈希表的扩展。迭代器支持遍历容器中的元素。`unordered_map`和`unordered_set`的插入、查找和删除操作在理想情况下时间复杂度为O(1),但在冲突较多时可能退化为O(n)。
420 5
|
存储 C++ 容器
【C++】map的模拟实现
C++中的`map`是STL中的一种关联容器,存储键值对且键唯一。`map`基于红黑树实现,自动按键排序,支持动态调整、复杂数据类型、丰富的成员函数及双向迭代器。插入、查找等操作保证了对数时间复杂度,适用于需要快速查找和有序存储的场景。
221 3
第十三问:C++中静态变量的用法有哪些?
本文介绍了 C++ 中静态变量和函数的用法及原理。静态变量包括函数内的静态局部变量和类中的静态成员变量,前者在函数调用间保持值,后者属于类而非对象。静态函数不能访问非静态成员,但可以通过类名直接调用。静态链接使变量或函数仅在定义文件内可见,避免命名冲突。