- 博客(38)
- 资源 (1)
- 收藏
- 关注
原创 C++ 多线程5 - <future>
C++98标准中并没有线程库的存在。C++11中才提供了多线程的标准库,提供了thread、mutex、condition_variable、atomic、future等相关对象及功能功能。 概述1. std::future1.1 构造函数、vaild()1.2 wait_*() 概述#include <future> 该头文件是线程支持库的一部分。该头文件包提供了线程之间异步的相关对象及函数,如下图所示:std::future是一个模板类。futur..
2021-03-25 18:21:25
1131
2
原创 C++ 多线程4 - atomic
C++98标准中并没有线程库的存在。C++11中才提供了多线程的标准库,提供了thread、mutex、condition_variable、atomic等相关对象及功能功能。 1. atomic1.1 构造函数1.2 成员函数2. future 1. atomicstd::atomic<> 是一个模板类,使用该模板类实例化的对象,提供了一些保证原子性的成员函数来实现共享数据的常用操作。其原型如下:template <class T> struct ato..
2021-03-24 18:49:52
2111
4
原创 C++ 多线程3 - condition_variable
C++98标准中并没有线程库的存在。C++11中才提供了多线程的标准库,提供了thread、mutex、condition_variable、atomic等相关对象及功能功能。 1. condition_variable2. 成员函数2.1 wait()2.2 wait_*()2.2 wait() 1. condition_variable#include<condition_variable>,该头文件中包含了条件变量相关的类,其中包括std::condition_var..
2021-03-24 11:50:44
570
原创 C++ 多线程2 - mutex
C++98标准中并没有线程库的存在。C++11中才提供了多线程的标准库,提供了thread、mutex、condition_variable、atomic等相关对象及功能功能。 1 概述1.1 1 概述1.1
2021-03-17 09:47:28
503
原创 C++ 函数模板
函数模板是通用的函数描述,是使用泛型来定义的函数。泛型可用具体的类型(如int,double)来替换。 1. 函数模板1.1 什么是函数模板1.2 重载的函数模板2. 具体化2.1 显示具体化2.2 实列化2.3 实列化 与 具体化 1. 函数模板1.1 什么是函数模板函数模板允许使用仍以的类型来定义函数,例如,可这样建立一个swap模板:template <typename T> // 该句可改为: template <class T>void s..
2021-03-07 16:19:30
236
7
原创 C++ 输入流
面试中笔试会遇ACM模式(需要写主函数、输入输出)。因此这里总结一下几个输入函数,方便后续查看。 1. iostream 1. iostream
2021-03-02 17:25:54
3065
4
原创 C++11 Lambda表达式
lambda 表达式1. 捕获列表 - [capture] lambda 表达式 lambda表达式是C++11新增特性之一,它是一种匿名函数。 Lambda 表达式的语法定义如下:[capture] (parameters)opt->return_type {body}可以看到,Lambda 主要分为五个部分:capture、parameters、return_type、opt、return_type 以及 {body},接下来依次对这五部分进行介绍。我们可以忽略参数列表.
2021-03-01 17:53:00
201
原创 C++11 std::array
std::array是在C++ 11标准中增加的STL容器,它的设计目的是提供与原生数组类似的功能与性能。也正因此,使得std::array有很多与其他容器不同的特殊之处,比如:std::array的元素是直接存放在实例内部,而不是在堆上分配间;std::array的大小必须在编译期确定。std::array的构造函数、析构函数和赋值操作符都是编译器隐式声明的…… 概述1. std::array1. 1 常用函数1. 2 构造函数 概述 std::array底层是一段连续的.
2021-02-24 14:40:34
6646
1
原创 C++ 数组详解
C++ 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。 1. 数组初始化2. char 数组3. 指针、动态数组 1. 数组初始化 在 C++ 中要声明一个数组,需要指定元素的类型和元素的数量,如下所示: 通用格式:typeName arrayName[ arraySize ];// 如: age 是一个数组,可容纳10个类型为int 元素。int age[10]; I. 只有在定义..
2021-02-23 21:01:31
4302
原创 STL- 容器特点总结
STL即C++标准模板库,包含了诸多常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。STL包含6大组件+13个头文件。6大组件: 关于 STL1. 序列式容器2. 关联式容器3. 容器适配器 关于 STLSTL即标准模板库(Standard Template Library)。STL包含 6大组件+13个头文件。 六大组件:容器、算法、迭代器、仿函数、适配器、分配器 这六大组件的交互关系: contain..
2021-02-20 18:07:58
1379
原创 c++ set、unordered_set
总结:set是STL中的一种关联容器。元素值本身val 就是键-key。因此容器中元素是唯一的。set内部采用红黑树实现,因此容器内部的数据都是有序的。由于底层是红黑树,set的插入、删除操作复杂度为O(logN),查找的复杂度基本为O(logN)。set容器中元素的值不能在容器进行修改,但可以对元素进行插入、删除操作。 1. set1.1 构造、常用函数1.2 1. set1.1 构造、常用函数at 返回key对应value的引用begin 返回..
2021-02-20 15:07:59
1357
2
原创 C++ std::unordered_map
unordered_map底层基于哈希表实现,拥有快速检索的功能。unordered_map是STL中的一种关联容器。容器中元素element成对出现(std::pair),element.first是该元素的键-key,容器element.second是该元素的键的值-value。unordered_map中每个key是唯一的,插入和查询速度接近于O(1)(在没有冲突的情况下),但是其内部元素的排列顺序是无序的。 1. unordered_map 底层原理2. 功能函数2.1 构造函数2.2..
2021-02-14 22:32:10
21073
1
原创 C++ 容器中 begin()、cbegin()、rbegin()、crbegin
1、迭代器 begin(), end()begin()2、反向迭代器 rbegin(), rend()<1>. begin() 和end() 操作产生指向容器内第一个元素和最后一个元素的下一个位置的迭代器,如下所示。这两个迭代器通常用于标记包含容器中所有元素的迭代范围。std::vector<int> vec;vec.begin() 返回一个迭代器,它指向容器c的第一个元素vec.end() 返回一个迭代器,它指向容器c的最后一个元素的下一个位置vec.
2021-02-02 16:08:23
26321
原创 C++ std::deque
重点:deque: double-end queue,双端队列std::deque 不像 vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,在一个映射结构中对这些内存块及顺序进行跟踪。优点快速地随机访问,支持[ ]操作符和at()。首尾两端进行快速的push、pop操作O(1),支持其他位置插入和删除操作O(n) 。缺点:内存占用较多。 1. deque、构造函数1.1 deque简介 1. deque、构造函数1.1 deque简介 std::dequ.
2021-02-02 11:09:03
5125
原创 C++ queue、priority_queue
重点总结:std::queue 是一个先进先出(FIFO)的容器,故std::queue不提供元素的任何迭代器操作。std::queue 是一种容器适配器,std::deque和std::list满足FIFO操作需求。queue底层默认使用std::deque。std::queue 容器只能访问头元素和尾元素。只能在容器的末尾添加新元素,只能从头部移除元素。 1. 构造函数1. 构造函数...
2021-02-01 17:50:10
480
原创 C++ std::stack
重点总结:Stack是一个一个先进后出(FILO)的容器,为了严格遵循FILO,Stack不提供元素的任何迭代器操作。Stack 是一个容器类的改编,提供特定的函数来访问元素。Stack 只能从容器的一端(栈顶)进行插入、删除、访问操作。Stack的基本操作示意图如下所示。本文参考自std::stack。 1. Stack与构造函数2. empty()、size()3. push()、pop()、top()4. swap()、emplace() 1. Stack与构造函数 st.
2021-02-01 16:13:09
1748
原创 C++ std::pair
重点总结: 1. 构造函数2. 元素访问-operator[], at()1. 构造函数头文件#include <utility>构造函数<1>. 默认构造函数,Constructs a pair object with its elements value-initialized.原型如下:constexpr pair();<2>. Copy/Move 构造函数,原型如下:template<class U, class V&g..
2021-02-01 10:31:51
999
原创 c++ std::map
重点总结:map 是STL的一个关联容器。里面的数据都是成对出现的,第一个是关键字(key),每个关键字只能在map中出现一次。第二个是该关键字的值(value)[底层] map內部的实现自建一颗红黑树,这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。[优缺点]map的插入、删除操作复杂度O(logN),查找的复杂度基本是O(logN)。 1. 常用函数2. operator[], at()3. insert()4. find(), count() 1. 常用函数..
2021-01-29 16:14:47
993
1
原创 C++ 类型最大值(最小值)、按位运算符
记录一些知识点一、各类型最大值、最小值… 在C/C++中,如何得到int(或其他类型)的最大值,最小值?[1]. 在limits.h/climits中,定义了INT_MAX,INT_MIN…,可以直接使用#include <climits>int main() { cout << "CHAR_MIN:" << CHAR_MIN << endl; cout << "UCHAR_MAX:" << UCHA
2021-01-29 10:38:07
2568
原创 极大似然估计、最大后验概率
1、条件概率 条件概率是指 事件A 在另外一个 事件B 已经发生条件下的发生概率,条件概率表示为:P(A|B) ,读作"在B的条件下A的概率"。条件概率可通过下面公式计算:P(A∣B)=P(AB)P(B)P(A|B) = \dfrac{P(AB)}{P(B)}P(A∣B)=P(B)P(AB) 条件概率只在 P(A)>0 时有定义。 2、先验概率、后验概率 [1]先验概率(prior probability): 是指根据以往经验和分析得到的概率,它往往作为"由因求果".
2021-01-25 16:43:56
1369
2
原创 C++ const总结
摘要文章目录一、使用const 而不是 #define 来定义常量二、const 与 变量的链接性三、const 与 指针 一、使用const 而不是 #define 来定义常量参考自C++ primer plus 附录1在C/C++中定义常量通常使用const关键字,当然你也可以使有宏#define来定义。这两种方式定义常量如下所示:// const 定义常量const int PI = 3.14;// 宏定义常量#define PI = 3.14首先介绍一下.
2020-12-04 18:53:59
273
原创 c++11 右值引用、移动语义、std::move、完美转发std::forward、emplace
目录1.右值2.emplace_back()1.右值2.emplace_back()c++11新加入了emplace_back():push_back():通常使用push_back()向容器中加入一个右值元素(临时对象)时,首先会调用构造函数构造这个临时对象,然后需要调用拷贝构造函数将这个临时对象放入容器中。原来的临时变量释放。这样造成的问题就是临时变量申请资源的浪费。emplace_back()引入了右值引用,转移构造函数后,push_back()右值时就会调用构造函数和转移构造函数,如果
2020-12-02 18:11:40
472
原创 c++ std::list
重点总结List是stl实现的双向链表,它允许快速的插入和删除List一、pandas是什么?一、pandas是什么?
2020-11-30 15:55:34
1269
原创 c++ std::vector
single element (1) iterator insert (const_iterator position, const value_type& val); fill (2) iterator insert (const_iterator position, size_type n, const value_type& val); range (3) template <class InputIterator> iterator insert (cons
2020-11-17 16:55:04
2279
原创 ROS-自定义msg类型以及使用-笔记
目录1.创建ROS工作空间 2.创建msg消息 3.修改package.xml &&修改CMakeLists.txt 4. 编写talker.cc 、listener.cc 调用msg 5. 编译并运行本文代码结构如下所示:为了便于理解,代码整体结构:Src文件-Dendrogram:1.创建ROS工作空间我们开始创建一个catkin 工作空间:$ mkdir -p ~/TEST_ROS/src$ cd ~/TEST_R...
2020-09-24 18:00:36
2351
原创 CMake常用命令- set()、find_package()、...
CMake:学习笔记,包含一些指令函数功能1. CMake 简介cmake是 kitware 公司以及一些开源开发者在开发几个工具套件(VTK)的过程中所产生的衍生品。后来经过发展,最终形成体系,在2001年成为一个独立的开放源代码项目。下载地址(官方)www.cmake.org,可以通过访问官方网站来获得更多关于cmake的信息,而且目前官方的英文文档比以前有了很大的改进,可以作为实践中的参考手册。2. CMake的简单使用创建一个项目目录,例如创建一个CMake文件(我的...
2020-09-21 23:32:59
2425
翻译 ProtoBuf 总结(三)C++ 常用功能
Protocol Buffer Basics: C++本教程为 C++ 程序员如何使用 protocol buffers 做一个基本介绍。通过创建一个简单的示例应用程序,它向你展示:如何在一个 .proto 文件中定义 message 如何使用 protocol buffer 编译器 如何使用 C++ protocol buffer 的 API 读写 message定义你的 protocol 格式创建一个地址簿应用程序,需要从 .proto 文件开始。.proto 文件中的定义很简.
2020-09-13 17:20:44
1145
翻译 ProtoBuf 总结(二)编写规范
规范指引本文为编写 .proto 文件提供了一份规范指引。通过遵守这些规范约定,你可以使你的 message 定义以及相关的类保持一致性,同时也将更易于阅读。Message 和 字段命名使用驼峰命名法(首字母大写)命名 message,例子:SongServerRequest 使用下划线命名字段,栗子:song_namemessage SongServerRequest { required string song_name = 1;}...
2020-09-13 15:01:41
1178
翻译 ProtoBuf 总结(一)语法指引
protocol buffers 是什么?Protocol buffers 最初是在 Google 开发的,用于处理索引服务器请求/响应协议。protocol buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小、更快、更为简单。你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏根据旧数据结构编译而成并且已部署的程序。为什么不使用 XML?对于序列化结构
2020-09-10 22:50:38
622
原创 2. libtorch C++ 中 accessor、packed_accessor_kernel、from_blob 解读
转载请贴链接:https://blog.csdn.net/u013271656/article/details/106791654
2020-06-16 19:19:03
3902
原创 1. libtorch C++(Tensor Indexing API & Factory Functions)
转换的结果float_tensor是指向新内存的新张量,与源无关source_tensor。
2020-06-16 18:44:56
1102
原创 Ubuntu16.04下---配置新环境--基于conda--安装Pytorch---spyder
很多文章没介绍 CUDA是什么,上来直接安装,没有创建对应的环境。so! 自己总结一下1. Anaconda下创建torch环境1.创建torch虚拟环境conda create -n your_env_name python=X.X(3.7版本)2. 激活虚拟环境source activate your_env_name(虚拟环境名称)2. 安装 torch...
2020-03-23 18:43:26
1457
原创 神经网络 matlab实现 感知器_MLP_,实现简化的 && 运算符
学习神经网络,顺便记个笔记。看了下文链接中大佬写的文章,通俗易懂。感知器(MLP介绍以及python代码):https://www.zybuluo.com/hanbingtao/note/433855MLP介绍的文章很多,上面链接也有详细讲解,这里不再细说。例子:用感知器实现&&函数我们设计一个感知器,让它来实现&&运算。程序员都知道,...
2019-09-25 17:19:09
5140
原创 最小二乘、加权最小二乘 matlab实现
function [fitY] = weightedLeastSquares(X, Y, order, fitX)% X/Y: data of coordinate-x/y% Polynomial of (order_num) order% return fitY k = size(X, 2); % Construct the matrix X0 X0 = zero...
2019-09-05 11:28:53
14156
9
ROS-自定义msg类型以及使用
2020-09-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人