摘要: 七种STL容器类型: deque forward_list // C++11 list queue priority_queue stack vector 以上都是序列。 ### 序列概念增加了迭代器至少是正向迭代器这样的要求,这保证了元素将按特定顺序排列,不会在两次迭代之间发生变化。 ### 序列 阅读全文
posted @ 2020-08-22 23:22 孱陵 阅读(122) 评论(0) 推荐(0) 编辑
摘要: C++11新增的基本容器要求 表达式 返回类型 说明 复杂度 X u(rv) 调用移动构造函数后,u的值与rv的原始值相同 线性 X u = rv 作用同X u(rv) a = rv X& 调用移动赋值运算符后,u的值与rv的原始值相同 线性 a.cbegin() const_iterator 返回 阅读全文
posted @ 2020-08-22 22:50 孱陵 阅读(124) 评论(0) 推荐(0) 编辑
摘要: STL具有容器概念和容器类型。 概念是具有名称(如容器、序列容器、关联容器等)的通用类别; 容器类型是可用于创建具体容器对象的模板。 一起的11个容器类型分别是: deque list queue priority_queue stack vector map multimap set multis 阅读全文
posted @ 2020-08-22 19:19 孱陵 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 其它有用的迭代器 除了ostream_iterator和istream_iterator之外,头文件iterator还提供了其它一些专用的预定义 迭代器类型: reverse_iterator back_insert_iterator front_insert_iterator insert_ite 阅读全文
posted @ 2020-08-22 18:42 孱陵 阅读(125) 评论(0) 推荐(0) 编辑
摘要: STL提供了一些预定义迭代器 copy(argument1, argument2, argument3)算法 该算法可以将数据从一个容器复制到另一个容器中。这种算法是以 迭代器方式实现的,所以它可以从一种容器到另一种容器进行复制: argument1,argument2为迭代器参数,表示复制范围 a 阅读全文
posted @ 2020-08-22 18:05 孱陵 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 概念 STL有若干个用C++语言无法表达的特性,如迭代器种类。因此,虽然可以设计具有 正向迭代器特征的类,但不能让编译器将算法限制为只使用这个类。 STL文献使用术语概念来描述这一系列的要求。如果所设计的容器类需要迭代器,可 考虑STL,它包含用于标准种类的迭代器模板 改进 概念可以具有类似继承的关 阅读全文
posted @ 2020-08-22 17:32 孱陵 阅读(104) 评论(1) 推荐(1) 编辑
摘要: STL定义了五种迭代器: 输入迭代器 InputIterato 解除引用用于程序向容器读取内容,一般不允许修改值 支持++运算符(前缀和后缀) 输入迭代器是单向迭代器,可以递增,但不能倒退 输出迭代器 OutputIterator 解除引用让程序修改容器值,但不能读取 其余部分与输入迭代器相似(单通 阅读全文
posted @ 2020-08-22 16:28 孱陵 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 有些算法(如标准排序和二分检索)要求能够直接跳到容器中的任何一个元素,这叫做随机访问,需要随机访问迭代器 阅读全文
posted @ 2020-08-22 16:25 孱陵 阅读(270) 评论(0) 推荐(0) 编辑
摘要: ### 理解迭代器是理解STL的关键所在。模板使得算法独立于存储的 ### 数据类型,而迭代器使得算法独立于使用的容器类型, ### 因此它们都是STL通用方法的重要组成部分 泛型编程旨在使函数不仅独立于容器中存储的数据类型(可以为char、double等), 而且独立于容器本身的数据结构(可以是数 阅读全文
posted @ 2020-08-22 15:52 孱陵 阅读(165) 评论(0) 推荐(0) 编辑
摘要: STL是一种泛型编程 ### 面向对象编程关注的是编程的数据方面,而泛型编程关注的是算法, ### 共同点是抽象和创建可重用代码,但理念绝然不同, ### 泛型编程旨在编写独立于数据类型的代码 阅读全文
posted @ 2020-08-22 15:17 孱陵 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 基于范围的for循环是为STL而设计的 for (<typename> x : object) { .... } 不同于for_each(),该循环允许修改容器内容,方法是使用引用参数 for (<typename> & x : object) { ... } 阅读全文
posted @ 2020-08-22 15:12 孱陵 阅读(85) 评论(0) 推荐(0) 编辑
摘要: STL定义了一些适用于所有容器类的非成员函数 ### 另一方面,即使有执行相同任务的非成员函数,STL有时也会也会定义一个成员函数。 ### 这是因为对有些操作来说,类的特定算法的效率比通用算法高。 ### 但通用算法能够操作两个类型不同的容器的内容 三个代表性的STL函数: for_each(ar 阅读全文
posted @ 2020-08-22 15:02 孱陵 阅读(86) 评论(0) 推荐(0) 编辑
摘要: // 1.返回容器中元素的数目 size() // 2.交换两个容器的内容 swap() // 3.返回一个指向容器中第一个元素的迭代器 begin() // 4.返回一个表示超过容器尾的迭代器(超尾迭代器) end() ——以上是所有STL容器都具有的基本方法。 ### 使用迭代器 ### 迭代器 阅读全文
posted @ 2020-08-22 14:23 孱陵 阅读(124) 评论(0) 推荐(0) 编辑
摘要: STL提供了一组表示容器、迭代器、函数对象和算法的模板; 容器:与数组类似,可以存储若干个值;STL容器是同质的,即存储的值的类型相同 算法:完成特定任务的处方 迭代器:用于遍历容器对象,是广义指针 函数对象:类似于函数的对象,如类对象或函数指针 STL使得能够构造各种容器和执行各种操作 STL的编 阅读全文
posted @ 2020-08-22 13:59 孱陵 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 应避免多个智能指针指向同一个堆内存时引发的多次删除同一个堆内存空间的情况。 auto_ptr // 使用赋值操作时将转让所有权(对堆内存的所有权) unique_ptr // 与auto_ptr同,但更严格 shared_ptr // 跟踪引用特定对象的智能指针数,仅当最后一个指针过期时,才调用de 阅读全文
posted @ 2020-08-22 12:37 孱陵 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 基本定义:智能指针模板定义了类似指针的对象,可以将new获得的地址赋给这种对象,当智能指针过期时,其析构函数将使用delete来释放内存。 使用的先决条件:要创建智能指针对象,必须包含memory头文件,且智能指针模板位于std中 一般使用方法:与常规指针单向兼容(可赋给常规指针,反之不可),不支持 阅读全文
posted @ 2020-08-22 12:22 孱陵 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 智能指针的作用是在它过期时,调用对象的析构函数,即使它是使用new创建的。 // C++98 auto_ptr // C++11 unique_ptr shared_ptr 阅读全文
posted @ 2020-08-22 12:01 孱陵 阅读(92) 评论(0) 推荐(0) 编辑
摘要: string库提供许多工具函数,它们大部分都被重载以同时处理C-风格字符串和string对象 // 1.返回当前分配个字符串的内存块的大小 capacity() // 2.设置分配内存块时的最小长度 reserve(argument) // 3.返回一个指向C-风格字符串的指针 c_str() 阅读全文
posted @ 2020-08-22 11:52 孱陵 阅读(70) 评论(0) 推荐(0) 编辑
摘要: // 1.比较字符串 重载了 <; <=; ==; >=; >; !=; 六个关系运算符用于比较string字符串,并且每个关系运算符都以三种方式重载,使之还满足string、C-风格字符串之间的比较。 // 2.返回字符串长度 size() // 成员函数:来自较早版本的string length 阅读全文
posted @ 2020-08-22 11:43 孱陵 阅读(175) 评论(0) 推荐(0) 编辑
摘要: cin(一个词) 或 getline(一句) getline( argument1, qrgument2, argument3):argument3指定输入边界,默认'\n' cin >> (argument) == operator >> (cin, argument) string最大允许长度: 阅读全文
posted @ 2020-08-22 11:10 孱陵 阅读(180) 评论(0) 推荐(0) 编辑