![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL
暂代
须知少日拿云志,曾许人间第一流。
展开
-
C++STL中sort用法介绍
自定义STL中sort的排序规则前情提要:0、要使用sort,首先需要包含头文件< algorithm>1、sort函数可以指定两个参数,也可以指定三个参数。(1)第一个是要排序的数组的起始地址。(2)第二个是结束的地址(最后一位要排序元素的后一位的地址)(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是升序排序。2、...原创 2018-09-29 20:30:22 · 14683 阅读 · 0 评论 -
STL线程安全讨论
最近在回头看STL里面的实现,也在进一步研究高性能服务器编程方面的东西,就想到那STL在多线程情况下是否安全呢?记录STL是数据结构和算法的精妙实现,因此为了追求极致的效率,内部并没有给所有的操作加锁。对于STL的容器而言,只有下面这两种情况可以保证线程安全:多个线程同时读取同一个容器的内容多个线程同时写不同的容器其他的情况,比方说:多个线程同时读、写同一个容器。这就不是线程安全...原创 2018-11-21 00:43:24 · 1676 阅读 · 0 评论 -
字符串切分的几种方式讲解
开发中,我们常常要用到 “ 字符串切分 ” 这种操作,比如:命令行的处理,消息格式的处理等。下面我讲解几种C/C++常用的字符串切分方式一、自定义如果项目这方面的需求比较简单,那么可以自己写一个字符串切分的函数#include <iostream>#include <string> // std::string#include <vector>...原创 2019-03-26 14:52:56 · 4714 阅读 · 0 评论 -
C++可调用对象详解
文章目录一、函数二、函数指针三、重载了函数调用运算符的类四、Lambda表达式(C++11)1.参数2.捕获列表2.1值捕获2.2引用捕获2.3隐式捕获2.4混合捕获3.返回值类型4.深度理解4.1 Lambda是函数对象4.1 表示Lambda捕获行为的类5.应用场景对于一个对象或者表达式,如果可以对其使用调用运算符,即。如果a是一个可调用的表达式,则我们可以编写 a(args) ,其中 a...原创 2019-04-21 13:59:16 · 1160 阅读 · 1 评论 -
STL常用算法总结(持续更新)
STL中的谓词是什么? STL中的谓词是一个可调用的对象,其返回结果是一个能用作条件的值。标准库算法所使用的谓词分为两类:一元谓词(意味着它们有一个参数)和 二元谓词(意味着它们有两个参数)。接受谓词参数的算法对输入序列中的元素调用谓词。因此,元素类型必须能转换为谓词的参数类型。建议:本文中很多地方用到了Lambda表达式,如果不清楚的读者可以参考:C++可调用对象文章目录一、排序1....原创 2019-04-21 14:49:40 · 506 阅读 · 0 评论 -
vector清空容器的操作以及个人的一些见解
当vector中存入大量的数据后,当我们不再使用vector中的元素后,如果能积极主动的去释放内存,那么是非常明智的。(对于小容量的数据,就没有这个必要了,因为对性能影响甚微)一、 知识背景:PS:这一部分是对文章题目所言操作的背景介绍,只关心题目的读者可以跳过为了支持随机访问,vector将元素连续存储到一块空间上(每个元素紧挨着前一个元素),那么当容器空间满了以后,再次插入新元素...原创 2019-04-17 22:46:44 · 929 阅读 · 0 评论 -
C++ emplace_back和push_back性能比较
概述从理论上说,右值引用版的emplace_back要比左值引用版的push_back更快一些,因为前者会调用参数的移动构造函数,而后者会调用参数的拷贝构造函数。熟悉这两种构造函数的读者自然明白移动构造函数不需要重新分配内存空间,所以要比拷贝构造函数耗时更少。实践一直只是从理论上知道以上的观点,但是并没有实际验证,刚好一个最近回顾以前的一个项目的时候看到了push_back,所以打算写一段代...原创 2019-07-22 01:42:38 · 3013 阅读 · 0 评论