C++
TopTAO-
这个作者很懒,什么都没留下…
展开
-
C++11标准库(STL)使用总结——greater()、less()及在sort中的应用
1.greater和less是头文件template <class T> struct greater { bool operator() (const T& x, const T& y) const {return x>y;} typedef T first_argument_type; typedef T second_argument_type...原创 2020-03-21 11:34:29 · 2749 阅读 · 0 评论 -
C++11标准库(STL)使用总结——map/set等关联容器和vector/list/deque等序列容器的erase()使用总结(防止迭代器失效)
STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque); 另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题,以避免引起不可预知错误或崩溃。一、序列性容器erase函数不仅使指向被删元素的迭代器失效,而且使被删元素之后的所有迭代器都失效。不能使用erase(iter++)的方式,因为...原创 2020-01-10 20:46:15 · 423 阅读 · 0 评论 -
C++11标准库(STL)使用总结——map
map 是关联容器,按照特定顺序存储由 key value (键值) 和 mapped value (映射值) 组合形成的元素。在映射中,键值通常用于对元素进行排序和唯一标识,而映射的值存储与此键关联的内容。该类型的键和映射的值可能不同,并且在部件类型被分组在一起VALUE_TYPE,这是一种对类型结合两种:typedef pair<const Key, T> value_type...原创 2019-09-11 20:50:07 · 1225 阅读 · 0 评论 -
C++11标准库(STL)使用总结——forward_list
forward_list(单向链表)是序列容器,允许在序列中的任何地方进行恒定的时间插入和擦除操作。forward_list(单向链表)被实现为单链表; 单链表可以将它们包含的每个元素存储在不同和不相关的存储位置中。通过关联到序列中下一个元素的链接的每个元素来保留排序。forward_list容器和列表之间的主要设计区别容器是第一个内部只保留一个到下一个元素的链接,而后者每个元素保留两个链接:...原创 2019-09-10 21:55:25 · 4364 阅读 · 1 评论 -
C++11标准库(STL)使用总结——vector
vector是表示可以改变大小的数组的序列容器。就像数组一样,vector为它们的元素使用连续的存储位置,这意味着它们的元素也可以使用到其元素的常规指针上的偏移来访问,而且和数组一样高效。但是与数组不同的是,它们的大小可以动态地改变,它们的存储由容器自动处理。在内部,vector使用一个动态分配的数组来存储它们的元素。这个数组可能需要重新分配,以便在插入新元素时增加大小,这意味着分配一个新数组...原创 2019-09-09 21:52:52 · 1668 阅读 · 0 评论 -
C++11标准库(STL)使用总结——deque
deque(['dek])(双端队列)是double-ended queue 的一个不规则缩写。deque是具有动态大小的序列容器,可以在两端(前端或后端)扩展或收缩。特定的库可以以不同的方式实现deques,通常作为某种形式的动态数组。但是在任何情况下,它们都允许通过随机访问迭代器直接访问各个元素,通过根据需要扩展和收缩容器来自动处理存储。因此,它们提供了类似于vector的功能,但是在序列...原创 2019-09-08 14:29:08 · 7080 阅读 · 0 评论 -
C++11标准库(STL)使用总结——array
array是固定大小的顺序容器,它们保存了一个以严格的线性顺序排列的特定数量的元素。在内部,一个数组除了它所包含的元素(甚至不是它的大小,它是一个模板参数,在编译时是固定的)以外不保存任何数据。存储大小与用语言括号语法([])声明的普通数组一样高效。这个类只是增加了一层成员函数和全局函数,所以数组可以作为标准容器使用。与其他标准容器不同,数组具有固定的大小,并且不通过分配器管理其元素的分配:它...原创 2019-09-07 18:57:44 · 873 阅读 · 0 评论 -
C++11标准库(STL)使用总结
STL定义了强大的、基于模板的、可复用的组件,实现了许多通用的数据结构及处理这些数据结构的算法。其中包含三个关键组件——容器(container,流行的模板数据结构)、迭代器(iterator)和算法(algorithm)。组件描述容器容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。迭代器迭代器...原创 2019-09-06 19:52:19 · 6587 阅读 · 0 评论 -
c++ 智能指针用法详解
c++ 智能指针用法详解本文介绍c++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被c++11弃用。为什么要使用智能指针:我们知道c++的内存管理是让很多人头疼的事,当我们写一个new语句时,一般就会立即把delete语句直接也写了,但是我们不能避免程序还未执行到delete时就跳转了或者...原创 2019-09-02 22:09:56 · 558 阅读 · 0 评论 -
十大经典排序算法C++和Python实现总结(动图演示)
一、算法概述1. 算法分类十种经典的排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。2. 算法复杂度#### 3. 相关概念 1. 稳定:如果a原本在b前...原创 2019-09-02 15:23:15 · 673 阅读 · 0 评论