欢迎来到 安卓源码空间!
安卓源码空间


                                     C++ map遍历的几种方式




C++ map遍历的几种方式

#include <iostream>
#include <unordered_map>
using namespace std;

int main() {
    unordered_map<string, int> mp;
    mp["张三"] = 20;
    mp["李四"] = 18;
    mp["王五"] = 30;

    // 方式一、迭代器
    cout << "方式一、迭代器" << endl;
    for (auto it = mp.begin(); it != mp.end(); it++) {
        cout << it -> first << " " << it -> second << endl;
    }

    // 方式二、range for C++ 11版本及以上
    cout << "\n方法二、 range for" << endl;
    for (auto it : mp) {
        cout << it.first << " " << it.second << endl;
    }

    // 方法三、 C++ 17版本及以上
    cout << "\n方法三" << endl;
    for (auto [key, val] : mp) {
        cout << key  << " " << val << endl;
    }
    
    return 0;
}

运行结果

方式一、迭代器
王五 30
李四 18
张三 20

方法二、 range for
王五 30
李四 18
张三 20

方法三
王五 30
李四 18
张三 20

补充

C++ 提供map与unordered_map两种关联容器,可以将key与value关联起来。

map与unordered_map区别:

  1. 底层实现原理

    • map:map内部实现了一个红黑树,该结构具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一个元素,因此,对于map进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行这样的操作,故红黑树的效率决定了map的效率。

    • unordered_map:unordered_map内部实现了一个哈希表,因此其元素的排列顺序是杂乱的,无序的。

  2. 查询效率 unordered_map查询复杂度O(1),map查询复杂度O(logn)

  3. 运行效率方面:unordered_map最高,而map效率较低但 提供了稳定效率和有序的序列。

  4. 占用内存方面:map内存占用略低,unordered_map内存占用略高,而且是线性成比例的。

参考文章

https://blog.csdn.net/zou_albert/article/details/106983268


————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
                            原文链接:https://blog.csdn.net/VariatioZbw/article/details/124947520

copyright@ 2020-2028  安卓源码空间网版权所有   

备案号:豫ICP备2023034476号-1号