• 容器


    序列是有序的,可以使用二分查找:
    ···
    low = 0;
    high = n - 1;
    while (low <= high)
    {
    int mid = (high - low) / 2;
    if (key == list[mid];
    return 0;
    else
    {
    if (key < list[mid])
    {
    high = mid - 1;
    }
    else
    low = mid + 1;
    }
    return -1;
    }
    ···

    类模板可以容纳不同类型的对象,这些不同类型的对象的共同特征:处理这些对象中的数据成员的算法逻辑基本上是一致的,也就是说一个类模板,其中的函数都是模板函数。

    容器:容纳,包含一组元素的对象
    容器适配器:stack(栈),queue(队列),priority_queue(优先队列)
    迭代器是泛化的指针,提供了顺序访问容器中每个元素的方法。
    使用在STL容器以外的迭代器,要包含头文件
    输入流迭代器:istream_iterator,可用(P++)获得下一个输入的元素
    输出流迭代器:ostream_iterator,可用(
    P++)=x将x输出到输出流

    迭代器:功能更为强大的指针,当元素类型为类或结构体,可用->访问该元素的成员
    适配器:负责转换
    泛型程序设计:1. 让程序尽量的通用
    2. 编写不依赖于具体数据类型的程序
    3.将算法从特定的数据结构中抽象出来,成为通用的

    函数对象:一个行为类似函数的对象,对它可以像调用函数一样调用
    函数对象是泛化的函数,任何普通的函数和任何重载了“()”运算符类的对象都可以作为函数对象使用
    使用STL的函数对象,要包含头文件
    使用STL的算法,要包含头文件

    迭代器是算法和容器的桥梁,通过迭代器来访问容器中的元素
    迭代器的辅助函数: advance(p,n) //对p执行n次自增操作
    distance(first,last)//计算两个迭代器first和last的距离,即对first执行多少次“++”操作能使得first=last
    随机访问:能使用下标
    STL中的顺序容器:顺序性容器的元素是线性排列的,可以随时在指定位置插入和删除元素
    向量(vector)
    双端队列(deque)
    列表(list)
    单向链表(forward-list)
    数组(array)
    前四个在逻辑上可看做是一个长度可扩展的数组,数组容器长度固定
    顺序性容器接口:(不包含单向链表(forward-list)和数组(array))
    包含的通用操作:构造函数
    赋值函数:assign
    插入函数:insert,push_front(只对list和deque),push_back,emplace,emplace_front
    删除元素:erase,clear,pop_front(只对list和deque),pop_back,emplace_back
    首尾元素的直接访问:front,back
    改变大小:resize
    双端队列:在两端插入或删除元素快,在中间插入或删除元素慢,随机访问较快,但比向量慢
    列表特点:在任意位置插入和删除元素都很快,但不支持随机访问,还有一个很有用的接合操作:即拼接操作,s1.splice(p,s2,q1,q2)//将s2中[q1,q2)移动到s1所指元素之前

    单向链表(forward_list):每个结点只有指向下个结点的指针,没有简单的方法来获取一个结点的前驱未定义insert,emplace和erase操作,而定义了insert_after,emplace_after和erase_after操作,其参数与list的insert,emplace和erase相同,但并不是插入或删除迭代器p1所指的元素,而是对p1所指元素之后的结点进行操作,不支持size操作
    数组(array)
    array是对内置数组的封装,提供了更安全,更方便的使用数组的方式
    array的对象的大小是固定的,定义时除了需要指定元素类型,还需要指定容器大小。
    不能动态地改变容器大小

  • 相关阅读:
    运算符
    初始编码
    python文件操作
    波士顿房价预测
    机器学习基础-数理统计
    linux基础命令--userdel 删除用户帐户和相关文件
    linux基础命令--rmdir 删除空目录
    linux基础命令--groupdel 删除群组
    linux基础命令--groupadd 创建新的群组
    linux基础命令--groupmod 修改组定义
  • 原文地址:https://www.cnblogs.com/ymd12103410/p/9607497.html
Copyright © 2020-2023  润新知