STL(Standard Template Library,标准

2023-03-29  本文已影响0人  ShowMeCoding

STL六大组件

STL大体分为六大组件,分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器

迭代器种类:数组, 链表,树, 栈, 队列, 集合, 映射表

种类 功能 支持运算
string 字符串 赋值, 拼接, 查找和替换, 比较, 存取, 插入与删除 =, assign, +=, append, find, rfind, replace, compare, [], at, insert, erase
vector 单端数组 赋值, 容量和大小, 插入和删除, 存取, 元素互换, 预留空间 =, assign, empty, capacity, size, resize, push_back, pop_back, insert, erase, clear, at, [], front, back, swap, reverse
deque 双端数组 赋值, 大小操作, 插入与删除, 数据存取, 排序 =, assign, empty, size, resize, push_back, push_front, pop_back, pop_front, insert, clear, erase, at, [], front, back, sort
stack 栈 赋值, 存取, 大小 =, push, pop, top, empty, size
queue 队列 赋值, 存取, 大小 =, push, pop, back, front, empty, size
list 链表 赋值和交换, 大小操作, 插入与删除, 存取, 反转, 排序 =, assign, swap, empty, size, resize, push_back, pop_back, push_front, pop_front, insert, clear, erase, remove, front, back, reverse, sort
set/multiset 集合 赋值, 大小和交换, 插入与删除, 查找与统计, 队组创建, 排序(默认从小到大) =, empty, size, swap, insert, clear, erase, find, count, pair
map/multimap 映射表 赋值, 大小和交换, 插入与删除, 查找与统计, 排序(默认从小到大) =, empty, size, swap, insert, clear, erase, find, count

字符串赋值

字符串拼接

字符串查找与拼接

字符串比较

字符串存取

字符串插入与删除

字符串字串

string substr(int pos = 0, int n = npos) const; //返回由pos开始的n个字符组成的字符串

vector数组赋值

vector容量和大小

vector插入和删除

vector数据存取

vector互换容器

vector预留空间

deque赋值操作

deque大小操作

deque插入与删除

两端插入操作:

deque 数据存取

deque 排序

stack栈

构造函数:

queue队列

构造函数:

list链表

函数原型:

list反转和排序

set/multiset 集合-底层使用二叉树实现

map/multimap映射表

构造和赋值
构造:

赋值:

二重排序-使用仿函数

案例描述:将Person自定义数据类型进行排序,Person中属性有姓名、年龄、身高
排序规则:按照年龄进行升序,如果年龄相同按照身高进行降序

#include <list>
#include <string>
class Person {
public:
    Person(string name, int age , int height) {
        m_Name = name;
        m_Age = age;
        m_Height = height;
    }

public:
    string m_Name;  //姓名
    int m_Age;      //年龄
    int m_Height;   //身高
};


bool ComparePerson(Person& p1, Person& p2) {

    if (p1.m_Age == p2.m_Age) {
        return p1.m_Height  > p2.m_Height;
    }
    else
    {
        return  p1.m_Age < p2.m_Age;
    }

}

void test01() {
    list<Person> L;

    Person p1("刘备", 35 , 175);
    Person p2("曹操", 45 , 180);
    Person p3("孙权", 40 , 170);
    Person p4("赵云", 25 , 190);
    Person p5("张飞", 35 , 160);
    Person p6("关羽", 35 , 200);

    L.push_back(p1);
    L.push_back(p2);
    L.push_back(p3);
    L.push_back(p4);
    L.push_back(p5);
    L.push_back(p6);

    for (list<Person>::iterator it = L.begin(); it != L.end(); it++) {
        cout << "姓名: " << it->m_Name << " 年龄: " << it->m_Age 
              << " 身高: " << it->m_Height << endl;
    }

    cout << "---------------------------------" << endl;
    L.sort(ComparePerson); //排序

    for (list<Person>::iterator it = L.begin(); it != L.end(); it++) {
        cout << "姓名: " << it->m_Name << " 年龄: " << it->m_Age 
              << " 身高: " << it->m_Height << endl;
    }
}

int main() {
    test01();
    system("pause");
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读