编程语言
首页 > 编程语言> > C++ map set

C++ map set

作者:互联网

C++ map set

map 和 set 的内部数据结构是红黑树

PS:二叉树的存储方式

二叉树既可以用链式存储,也可以用数组顺序存储。数组顺序存储的方式比较适合完全二叉树,其他类型的二叉树用数组存储会比较浪费存储空间。其实就是一种完全二叉树,最常用的存储方式就是数组。

PSS: 散列表 vs 二叉查找(排序)树

红黑树

我们学习数据结构和算法,要学习它的由来、特性、适用的场景以及它能解决的问题。对于红黑树,也不例外。你如果能搞懂这几个问题,其实就已经足够了。

红黑树是一种平衡二叉查找树。它是为了解决普通二叉查找树在数据更新的过程中,复杂度退化的问题而产生的。红黑树的高度近似 log2n,所以它是近似平衡,插入、删除、查找操作的时间复杂度都是 O(logn)。

map 和 set 使用

// ref: https://blog.csdn.net/bingtang_blog/article/details/52730530
#include<iostream>
#include<map>
using namespace std;
int main(){
    //map声明,加入有文件map 
    map<int, int> m;

    //插入元素要用makr_pair的方式 
    m.insert(make_pair(1, 5));

    //通过iterator来查找map里面的元素 
    map<int, int>::iterator ite;
    ite = m.find(1);
    //如果找到了,那么我们就删除掉原有的元素,加入新元素 
    //因为后来加入的元素如果键重复,不能覆盖,会被忽略 
    if(ite != m.end()){
        m.erase(1);
        m.insert(make_pair(1, 6));
    }else{
        //没找到直接加入 
        m.insert(make_pair(1, 6));
    }
    //用这种方式,来输出键值对的值 
    cout << ite->second << endl;

    //历遍map元素,并输出键值对 
    for(ite = m.begin(); ite != m.end(); ite++){
        cout << ite->first << "\t" << ite->second << endl;
    }
}
// ref: https://blog.csdn.net/bingtang_blog/article/details/52730530
#include<iostream>
#include<map>
#include<set>
using namespace std;
int main(){
    //声明集合,加入头文件<set> 
    set<int> s;

    //向集合中插入元素 
    s.insert(1);
    s.insert(2);
    s.insert(3);

    //在集合中查找元素 
    set<int>::iterator ite;
    ite = s.find(1);
    if(ite == s.end()){
        cout << "Not found" << endl;
    }else{
        cout << "Found" << endl;
    }

    //集合删除元素 
    s.erase(2);

    //在集合中查找元素的第二种方式 
    if(s.count(3) != 0){
        cout << "Found" << endl;
    }else{
        cout << "Not found" << endl; 
    }

    //历遍集合元素 
    for(ite = s.begin(); ite != s.end(); ite++){
        cout << *ite << endl;
    }
}

标签:map,set,ite,C++,二叉,查找,二叉树
来源: https://www.cnblogs.com/zwk-coder/p/10990436.html