STL
Jeff_
面向Google和StackOverflow编程的小学生。
展开
-
Leetcode:Two Sum —— 利用unordered_map特性
unordered_map 是關聯容器,含有帶唯一鍵的鍵-值 pair 。搜索、插入和元素移除擁有平均常數時間複雜度。Given an array of integers, returnindicesof the two numbers such that they add up to a specific target.You may assume that each inpu...原创 2019-01-14 15:18:10 · 151 阅读 · 0 评论 -
Tuples in C++(元组)
什么是元组?元组是一个可以容纳许多元素的对象。元素可以是不同的数据类型。元组的元素被初始化为参数,以便访问它们。纵观传统 C++ 中的容器,除了std::pair外,似乎没有现成的结构能够用来存放不同类型的数据(通常我们会自己定义结构)。但std::pair的缺陷是显而易见的,只能保存两个元素。元组基本操作关于元组的使用有三个核心的函数:std::get: 获得元组某个位置...原创 2019-05-20 00:55:08 · 547 阅读 · 0 评论 -
C++ std::pair / std :: tuple / std::optional 的用法
leetcode —— Two Sum刷题刷到std::pair和make_pair()函数,记录下用法,做一个原创 2019-02-19 21:14:51 · 3391 阅读 · 0 评论 -
迭代器iterator
能进行算术运算的迭代器只有随即访问迭代器,要求容器元素存储在连续内存空间里,vector,string,deque的迭代器是有加减法的,但是map,set,multimap,multiset的迭代器是没有加减法的,list也不可以 ...原创 2019-02-19 11:01:24 · 129 阅读 · 0 评论 -
【C++模版之旅】神奇的Traits
介绍traits的文章很多,但感觉大部分文章的说明都很晦涩难懂,把一个并不很复杂的C++模板的应用描述的过于复杂。忍不住想把自己的理解跟大家分享一下,或许我也只是掌握了一点traits的皮毛而已,但也希望这些皮毛能略微抓住你的眼球,带给你一些启发。首先,介绍traits前,回味一下C++的模板及应用,如果你脑海里浮现出的只是为实现一些函数或类的重用的简单模板应用,那我要告诉你,你out了。最近...转载 2019-02-12 11:49:31 · 210 阅读 · 0 评论 -
stl剖析之萃取(traist)机制
什么是traits?其实它并不是一个新的概念,上个世纪90年代中期就已经被提出,只是到了这个世纪才在各个C++库中被广泛使用,而我也是在这个概念诞生十多年后才接触到它。C++之父Bjarne Stroustrup对traits有如下的描述:Think of a trait as a small object whose main purpose is to carry informati...转载 2019-02-12 12:17:18 · 1089 阅读 · 0 评论 -
C++ 容器中自定义类型 value_type
现在来看看value_type到底有什么用。首先定义两个包装容器,只是对任意类型的值进行了一层包装而已。template <typename T> class Bag //包装容器袋子{public: typedef T value_type; T val; //内容 Bag(T value):val(value){};};template ...转载 2019-02-10 21:58:09 · 12102 阅读 · 0 评论 -
algorithm 头文件
标准模板库:算法标头<algorithm>定义了一系列特别设计用于元素范围的函数。范围是可以通过迭代器或指针访问的任何对象序列,例如数组或某些STL容器的实例。但请注意,算法直接通过迭代器对值进行操作,不会以任何方式影响任何可能容器的结构(它永远不会影响容器的大小或存储分配)。std::adjacent_find :在范围内找到相等的相邻元素。std :: all_of:测试...原创 2019-02-21 22:17:05 · 3368 阅读 · 0 评论 -
C++:vector中的resize()函数 VS reserve()函数
写代码的时候无意错用了这两个函数 导致测试的时候,程序运行崩溃 发现这两个函数还是有区别的void reserve (size_type n);reserver函数用来给vector预分配存储区大小,即capacity的值 ,但是没有给这段内存进行初始化。reserve 的参数n是推荐预分配内存的大小,实际分配的可能等于或大于这个值,即n大于capacity的值,就会realloca...原创 2019-01-22 14:35:53 · 297 阅读 · 0 评论 -
利用unordered_map特性求交集
unordered_map 是关联容器,含有带唯一键的键-值 pair 。搜索、插入和元素移除拥有平均常数时间复杂度。元素在内部不以任何特定顺序排序,而是组织进桶中。元素放进哪个桶完全依赖于其键的哈希。这允许对单独元素的快速访问,因为一旦计算哈希,则它准确指代元素所放进的桶。 让我们看下原题:给定两个数组,编写一个函数来计算它们的交集。Example 1:Input: nu...原创 2019-01-07 22:30:22 · 712 阅读 · 0 评论 -
Set容器,利用set容器特性去重,查重
set容器关于set,必须说明的是set关联式容器。set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为...原创 2019-01-09 09:29:48 · 4869 阅读 · 1 评论 -
函数对象包装器(std::function、std::bind / std::placeholder)
这部分内容虽然属于标准库的一部分,但是从本质上来看,它却增强了 C++ 语言运行时的能力,这部分内容也相当重要,所以放到这里来进行介绍。std :: function和std :: bind的主要用途之一是安全函数指针。网上有很多文章解释了函数指针在C / C ++中是如何有用的。例如,它们对于实现回调机制很有用。也就是说,你有一些功能需要很长时间才能执行,但你不想等待它返回然后你可以在单独的...原创 2019-05-16 22:13:48 · 686 阅读 · 0 评论