C++学习手记
文章平均质量分 80
C++学习手记
一銤阳光
这个作者很懒,什么都没留下…
展开
-
C++拷贝构造与拷贝赋值&移动构造与移动赋值
默认的构造与赋值自定义构造与赋值DISALLOW_COPY_AND_ASSIGN进行类设计时,如果某个类的对象是独一无二的,也就是对该类对象做副本没有任何意义.那么,可以限制编译器自动生动的拷贝构造函数和赋值构造函数.一般参用下面的宏定义的方式进行限制// A macro to disallow the copy constructor and operator= functions // This should be used in the priavte:declarations for原创 2022-01-11 09:35:43 · 531 阅读 · 0 评论 -
C++ 智能指针
C++11 中推出了三种智能指针,unique_ptr、shared_ptr 和 weak_ptr,同时也将 auto_ptr 置为废弃raw pointer 使用的缺陷1. 容易忘记delete,造成内存泄漏class HMI{public: HMI() : w(new Widget()){} ~HMI() { // 忘记 delete w }private: Widget* w;};如果因为一些原因,w 必须建立在堆上。如果.原创 2022-01-09 23:40:02 · 423 阅读 · 0 评论 -
C++ Protobuf
ContentsCopyFrom MergeFrom PackFrom 区别与实现Reflection-反射操作参考文档CopyFrom MergeFrom PackFrom 区别与实现// Make this message into a copy of the given message.// 基本等价与 Clear() + MergeFrom(from);void Message::CopyFrom(const Message & from) // Singular field原创 2021-10-28 00:13:31 · 2190 阅读 · 0 评论 -
Google gflags参数传递
gflags Google Commandline Flagsgflags 是google开源的一套命令行参数解析工具,比 getopt 功能更加强大,使用起来更加方便。用在百度Apollo中gflag被广泛的应用在各种全局变量中,例如节点名,变量名等等如何使用Gflag1. 声明&定义 配置项声明格式:DECLARE_xxx(变量名)utils_gflags.h#ifndef UTILS_GFLAGS_H_#define UTILS_GFLAGS_H_#include "gflag原创 2017-12-24 12:07:43 · 599 阅读 · 0 评论 -
C++ debug程序分析
文章目录sigsegv segmentation fault Segmentation faultsigsegv segmentation fault Segmentation fault段错误就是指访问的内存超出了系统所给这个程序的内存空间分析是否有针运算(加减)引起的越界、野指针、空指针都归为指针越界//errot BoundingBox *box; //野指针 Cal...原创 2019-04-16 20:03:03 · 772 阅读 · 0 评论 -
CLion基本使用方法
快捷键按键组合功能Alt+Enter定位到 error or warningCtrl+Shift+I快速查找变量的定义Ctrl+N查看,快速打开某个类Ctrl+F12查看当前类的所有成员变量Ctrl+H定位父类/子类Alt+F7 / Ctrl+Alt+7快速查找某个类/变量/方法 在整个工程中的位置Ctrl+Shift+F...原创 2019-03-03 21:09:28 · 12385 阅读 · 2 评论 -
C++ stringstream 字符串格式化与格式转换方法
stringstream 对象C++ stringstream 类是一种十分有用的类,特别是当我们需要在程序中使用字符串和数字数据互相转换的时候字符串格式化 ss <<过程:数字 -> stringstream对象 -> string创建一个stringstream 对象,并通过运算符 ”<<“ 将数据传递给 stringstream 对象再调用st...原创 2019-02-15 21:38:35 · 9122 阅读 · 1 评论 -
ubuntu中用vscode编译调试C\C++
转载至 hahaMango-关于在ubuntu中用vscode编译调试C\C++安装vscode的C\C++插件。配置launch.json和task.json这两个文件编译调试C++程序(注意以上过程请确保在ubuntu里面安装了c++编译器,和vscode) 第一步 在vscode中安装C++的插件,按ctrl+p调出命令行,在上面输入ext instal...转载 2019-01-23 11:14:17 · 3636 阅读 · 0 评论 -
C++ vector/ queue/map 操作
vector:动态数组/向量的数据结构的属性Vectors 包含着一系列连续存储的元素,其行为和数组类似。访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线性时间复杂度。vector 常用的方法vector begin()/end() 返回一个当前vector容器中起始元素/最后一个元素的迭...原创 2019-01-21 21:51:32 · 790 阅读 · 0 评论 -
使用reserve(size)来避免不必要的重新分配
使用reserve(size)来避免不必要的重新分配对于vector和string来说,当它们的需要更多空间时,就会自动增加空间,而每次增加空间的容量会导致很大的开销,首先必须分配新的内存块,它有容器目前容量的几倍(在大部分实现中,vector和string的容量每次变为2倍),然后把所有元素从容器的旧内存拷贝到它的新内存,接着销毁旧内存中的对象,最后回收旧内存。看到以上的那些步骤,我不禁对容...转载 2019-01-07 20:47:24 · 1109 阅读 · 0 评论 -
C++ fstream/ifstream/ofstream文件读写操作
文章目录写在前面1. fstream类的成员函数 open(),close()open读写操作2. fstream子类 ofstream/ifstreamofstream 向文件中写数据ifstream 从文件中读数据写在前面在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件#include <...原创 2018-12-27 14:46:10 · 1856 阅读 · 6 评论 -
C++11多线程与并发指南
写在前面与C++11多线程相关的头文件&amp;lt;atomic&amp;gt;:该头文主要声明了两个类, std::atomic 和 std::atomic_flag,另外还声明了一套 C 风格的原子类型和与 C 兼容的原子操作的函数。&amp;lt;thread&amp;gt;:该头文件主要声明了 std::thread 类,另外 std::this_thread 命名空间也在该头文件中。&amp;lt原创 2018-10-08 15:43:16 · 474 阅读 · 0 评论 -
vscode使用小结
头文件只能感应设置通过编辑 .vscode/c_cpp_properties.json文件 (有波浪线,说明没有感应到,点击小灯泡,–&amp;gt; Edit includePath setting){ &quot;configurations&quot;: [ { &quot;name&quot;: &quot;Linux&quot;,原创 2018-07-03 15:29:00 · 2212 阅读 · 0 评论 -
内联函数 inline- 定义在头文件中的简单函数
(一)inline函数(摘自C++ Primer的第三版)在函数定义中,函数返回类型前加上关键字inline即把min()指定为内联。 inline int min(int first, int secend) {/****/};inline 函数对编译器而言必须是可见的,以便它能够在调用点内展开该函数。与非inline函数不同的是,inline函数必须在调用该函数的...转载 2018-04-11 21:49:52 · 4655 阅读 · 0 评论