C ++ набор на карте

C ++ набор на карте

Внутренние структуры данных и установить карту красно-черное дерево

PS: бинарное дерево хранения

Бинарное дерево может быть использована сеть магазинов также может быть использован массив последовательно сохраненную. Массив хранения в последовательном порядке , более подходящим для полного двоичного дерева, бинарное дерево с множеством других типов хранения будет больше отходов дискового пространства. Куча на самом деле полное бинарное дерево, является наиболее распространенными массивами хранения данных.

PSS: хэш против двоичного поиска (отсортированный) дерево

  • хэш данных таблицы неупорядоченных памяти , если вы хотите упорядоченные выходные данные, вы должны быть отсортированы. Для бинарного дерева поиска, нам нужно только Симметричного обходе, может быть в пределах временной сложности O (N), последовательность выходных данных прописала.

  • Хэш таблица расширения потребляет много, но, столкнувшись с хэш столкновения, нестабильная производительность, несмотря на бинарное дерево поиска неустойчивого производительности, но в проекте, производительность нашего самого популярного сбалансированного бинарного дерева поиска является очень стабильным, время стабильная сложность O (LOGN).

  • Построить подстановок комплекс хэш - таблицы , чем бинарное дерево, много вещей , чтобы рассмотреть. Например, хэш - функция дизайн, разрешение конфликтов, расширение производственных мощностей, сокращение объема и так далее. Сбалансированное двоичное дерево поиска нужно только рассмотреть баланс этой проблемы, и решение этой проблемы является относительно зрелой, фиксированы.

  • Несмотря на время, и поэтому операция хэш-таблицы поиска является постоянный уровень сложности, но так как это хэш конфликт, это не обязательно являются постоянными меньше LOGN, поэтому фактическая скорость может не обязательно искать для (LOGN) быстрее, чем O. Плюс много времени хэш-функции, не обязательно высокое дерево поиска, чем бинарное эффективность.

Красно-черное дерево

Узнает структуру данных и алгоритмы, чтобы узнать его происхождение характеристик сцены и проблем , которые он решает . Для красно-черного дерева, не является исключением. Если вы можете узнать на эти вопросы, на самом деле, было бы достаточно.

Красно-черное дерево бинарное дерево поиска. Это общая проблема для решения бинарного дерева поиска в процессе обновления данных, сложность деградации производства. Красно-черная высота дерева примерно log2n, так что примерно уравновешены, вставка, удаление, сложность поиска по времени операции O (LOGN).

Используйте карту и установить

  • карта
// 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;
    }
}

рекомендация

отwww.cnblogs.com/zwk-coder/p/10990436.html