STL

作者: BlueFishMan | 来源:发表于2020-06-21 14:17 被阅读0次

字符串

    string s = "Hello World";

    // Element access
    s[0];
    s.front();
    s.back();

    // Iterators
    s.begin();
    s.end();

    // Capacity
    s.empty();
    s.size();

    // Operations
    s.clear();
    s.insert(s.begin(), '1');
    s.insert(s.end(), '2');
    s.erase(s.begin());
    s += '3';
    s.compare("Hello World");
    s.substr(4, 5);

    // Search
    s.find("zhang");// string::nops

    to_string(INT_MAX);
    to_string(INT_MIN);
    stoi(max);
    stoi(min);

    isspace('a');
    isalpha('a');
    isupper('A');
    islower('a');
    isdigit('1');

Containers Library

容器 底层数据结构 时间复杂度 有无序 可不可重复
array 数组 随机读改 O(1) 无序 可重复 支持快速随机访问
vector 数组 随机读改、尾部插入、尾部删除 O(1),头部插入、头部删除 O(n) 无序 可重复
list 双向链表 插入、删除 O(1),随机读改 O(n) 无序 可重复
set 红黑树 插入、删除、查找 O(log2n) 有序 不可重复
multiset 红黑树 插入、删除、查找 O(log2n) 有序 可重复
map 红黑树 插入、删除、查找 O(log2n) 有序 不可重复
multimap 红黑树 插入、删除、查找 O(log2n) 有序 可重复
hash_set 哈希表 插入、删除、查找 O(1) 最差 O(n) 无序 不可重复
hash_multiset 哈希表 插入、删除、查找 O(1) 最差 O(n) 无序 可重复
hash_map 哈希表 插入、删除、查找 O(1) 最差 O(n) 无序 不可重复
hash_multimap 哈希表 插入、删除、查找 O(1) 最差 O(n) 无序 可重复
stack list 顶部插入、顶部删除 O(1) 无序 可重复
queue list 尾部插入、头部删除 O(1) 无序 可重复
priority_queue vector+max-heap 插入、删除 O(log2n) 有序 可重复

序列容器(Sequence Containers)

array(数组)

static contiguous array

    array<int,4> a = {7,5,16,8};

    // Element access
    a[0];
    a.front();
    a.back();

    // Iterators
    a.begin();
    a.end();

    // Capacity
    a.empty();
    a.size();

vector(数组)

dynamic contiguous array

    vector<int> v = {7,5,16,8};
    vector<int> v1(2,0);
    vector<int> v2(v.begin(),v.end());

    // Element access
    v[0];
    v.front();
    v.back();

    // Iterators
    v.begin();
    v.end();

    // Capacity
    v.empty();
    v.size();
    v.max_size();
    v.reserve();
    v.capacity();
    v.shrink_to_fit();
    // vector是按照容器现在容量的一倍进行增长.vector容器分配的是一块连续的内存空间,每次容器的增长,并不是在原有连续的内存空间后再进行简单的叠加,而是重新申请一块更大的新内存,并把现有容器中的元素逐个复制过去,同时销毁旧的内存.这时原有指向旧内存空间的迭代器已经失效,所以当操作容器时,迭代器要及时更新

    // Modifiers
    v.clear();
    v.insert(v.begin(),1);
    v.insert(v.end(),2);
    // Iterator pointing to the inserted value
    v.erase(v.begin());
    // Iterator following the last removed element. If the iterator pos refers to the last element, the end() iterator is returned
    v.push_back(3);
    v.pop_back();

list(链表)

doubly-linked list

    list<int> l = {7,5,16,8};

    // Element access
    l.front();
    l.back();

    // Iterators
    l.begin();
    l.end();

    // Capacity
    l.empty();
    l.size();

    // Modifiers
    l.clear();
    l.insert(l.begin(),1);
    l.insert(l.end(),2);
    l.erase(l.begin());
    l.push_back(3);
    l.pop_back();
    l.push_front(4);
    l.pop_front();

关联容器(Associative Containers)

set

collection of unique keys,sorted by keys

    set<int> treeset;

    // Iterators
    treeset.begin();
    treeset.end();

    // Capacity
    treeset.empty();
    treeset.size();

    // Modifiers
    treeset.clear();
    treeset.insert(1);
    treeset.erase(2);

    // Lookup
    treeset.count(1);
    treeset.find(1);// treemap.end()

    for (auto it = treeset.begin(); it != treeset.end(); it++) {
        cout << *it << endl;
    }

map

collection of key-value pairs,sorted by keys,keys are unique

    map<int, int> treemap;

    // Iterators
    treemap.begin();
    treemap.end();

    // Capacity
    treemap.empty();
    treemap.size();

    // Modifiers
    treemap.clear();
    treemap.insert(make_pair(1, 1));
    treemap[2] = 2;
    treemap.erase(1);

    // Element access
    treemap[2] = 2;

    // Lookup
    treemap.count(1);
    treemap.find(1);

    for (auto it = treemap.begin(); it != treemap.end(); it++) {
        cout << it->first << ' ' << it->second << endl;
    }

无序关联容器(Unordered Associative Containers)

unordered_set

collection of unique keys,hashed by keys

    unordered_set<int> hashset;

    // Iterators
    hashset.begin();
    hashset.end();

    // Capacity
    hashset.empty();
    hashset.size();

    // Modifiers
    hashset.clear();
    hashset.insert(1);
    hashset.erase(1);

    // Lookup
    hashset.count(1);
    hashset.find(1);

    for (auto it = hashset.begin(); it != hashset.end(); it++) {
        cout << *it << endl;
    }

unordered_map

collection of key-value pairs,hashed by keys,keys are unique

    unordered_map<int, int> hashmap;

    // Iterators
    hashmap.begin();
    hashmap.end();

    // Capacity
    hashmap.empty();
    hashmap.size();

    // Modifiers
    hashmap.clear();
    hashmap.insert(make_pair(1, 1));
    hashmap[2] = 2;
    hashmap.erase(1);

    // Element access
    hashmap[2] = 2;

    // Lookup
    hashmap.count(1);
    hashmap.find(1);

    for (auto it = hashmap.begin(); it != hashmap.end(); it++) {
        cout << it->first << ' ' << it->second << endl;
    }

容器适配器(Container Adaptors)

stack(栈)

adapts a container to provide stack(LIFO data structure)

    stack<int> s;

    // Element access
    s.top();

    // Capacity
    s.empty();
    s.size();

    // Modifiers
    s.push(1);
    s.pop();

queue(队列)

adapts a container to provide queue(FIFO data structure)

    queue<int> q;

    // Element access
    q.front();
    q.back();

    // Capacity
    q.empty();
    q.size();

    // Modifiers
    q.push(1);
    q.pop();

priority_queue(优先队列)

adapts a container to provide priority queue

    priority_queue<int> pq; // 大根堆
    priority_queue<int,vector<int>,greater<>> pq2;// 小根堆

    // Element access
    pq.top();

    // Capacity
    pq.empty();
    pq.size();

    // Modifiers
    pq.push(1);
    pq.pop();

相关文章

  • stl简介

    stl stl简介 1. 什么是STL? STL(Standard Template Library),封装基本数...

  • C++标准库结构与使用

    本文预览: 标准库和STL STL的六大组件 STL容器分类 STL容器使用 标准库和STL ** 我们在写C++...

  • GeekBand笔记: STL与泛型编程(容器)

    stl stl 6 componentsallocatorcontaineralgorithmiteratorfu...

  • Boolan - C++学习笔记 _STL - 第一周

    STL与泛型编程 一、STL是什么 STL(Standard TemplateLibrary),即标准模板...

  • C++ STL

    STL STL 是“Standard Template Library”的缩写,中文译为“标准模板库”。STL 是...

  • C++基础一文通(六)STL

    一. STL 标准模板库 STL(Standard Template Library,标准模板库) STL 从广义...

  • C++ STL是什么

    STL 组件主要包括容器,迭代器、算法和仿函数。STL 基本结构和 STL 组件对应。 STL 主要由迭代器、算法...

  • C++ STL编程

    一、STL简介 1.1 初识STL STL(Standard Template Library,即标准模版库)是一...

  • stl

    STL(标准模板库)基本概念 一、什么是STL STL(Standard Template Library,标准模...

  • GEEKBAND BOOLAN STL第一周

    STL与泛型编程 一、STL是什么 STL(Standard TemplateLibrary),即标准模板库,是一...

网友评论

      本文标题:STL

      本文链接:https://www.haomeiwen.com/subject/mhfaxktx.html