c++
文章平均质量分 76
DinnerHowe
这个作者很懒,什么都没留下…
展开
-
c++: C++中delete和delete[]的区别
关于C++中的delete和delete[]的区别,今天遇到了,上网查了一下。做个备份,以免丢失。 C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。 ...转载 2017-07-31 17:57:10 · 417 阅读 · 0 评论 -
c++: c++ unique_ptr使用
unique_ptr使用场景1、为动态申请的资源提供异常安全保证我们先来看看下面这一段代码:void Func(){ int *p = new int(5); // ...(可能会抛出异常) delete p;}这是我们传统的写法:当我们动态申请内存后,有可能我们接下来的代码由于抛出异常或者提前退出(if语句)而没有执行delete操作。解决的方法是使用unique...原创 2018-04-16 23:02:30 · 4618 阅读 · 0 评论 -
c++: std::condition_variable
前面三讲《C++11 并发指南二(std::thread 详解)》,《C++11 并发指南三(std::mutex 详解)》分别介绍了 std::thread,std::mutex,std::future 等相关内容,相信读者对 C++11 中的多线程编程有了一个最基本的认识,本文将介绍 C++11 标准中 <condition_variable> 头文件里面的类和相关函数。<c...原创 2018-03-28 21:49:17 · 541 阅读 · 0 评论 -
c++: C++ Virtual详解
Virtual是C++ OO机制中很重要的一个关键字。如下所示:只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如下面例子中的函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Derived的对象时,对point的print函数的调用实际上是调用了Derived的p...转载 2018-04-11 22:38:58 · 440 阅读 · 0 评论 -
c++: C++ auto 关键字的使用
auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型,类似的关键字还有decltype。举个例子:int a = 10;auto au_a = a;//自动类型推断,au_a为int类型cout << typeid(au_a).name() << endl;typeid运算符可以输出变量的类型。程序的运行结果输出了int这种用法...原创 2018-04-12 16:47:27 · 415 阅读 · 0 评论 -
c++: C++ 基类-继承-单继承-多继承
1. 基类官方解释是:在面向对象设计中,被定义为包含所有实体共性的class类型,被称为“基类”。 这个解释通俗的说就是:里面有public和private或者protected之类具体函数和变量定义的类,例如:class Base{ public: void f(int x){ cout << "Base::f(int) " << ...原创 2018-04-13 11:32:10 · 1673 阅读 · 0 评论 -
c++: C++虚函数和纯虚函数
纯虚函数定义纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类(继承类)都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加=0。 定义纯虚函数的目的在于,使派生类仅仅只是继承函数的接口。格式virtual &lt;函数返回类型&gt; 函数名 (参数表) = 0;例子class A{public: virtual vo...原创 2018-04-13 15:06:32 · 390 阅读 · 0 评论 -
c++: C++中重载和覆盖的区别
1. 重载(overload)理论函数组成一般格式是:return_type function_name( parameter list )重载指的是函数具有的不同的参数或者不同返回值,而函数名必须相同的函数。简单说出了function_name其他都可以不同:重载要求输入参数列表或者返回值必须不同比如: – 输入参数的类型不同,或者同时(输出返回值不同) – ...原创 2018-04-13 17:01:49 · 469 阅读 · 0 评论 -
c++: c++ csignal使用
signal()是一种系统调用,用于通知运行时系统,当某种特定的“软件中断”发生时调用特定的程序。它的真正的名字应该是:Call_that_routine_when_this_interrupt_Comes_in (当该中断发生时调用那个程序),调用signal()函数,并通过参数传递告诉它终端类型以及用于处理中断的程序。ANSIC 标准中,signal() 函数的声明如下:void...原创 2018-05-25 17:30:07 · 2717 阅读 · 0 评论 -
c++: c++ cmakelist 详解
基本元素首先cmaklist必须包括以下几个部分:#工程名project(study_case)#cmake最低版本需求cmake_minimum_required(VERSION 2.8.3)#添加添加需要的库set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/usr/local/share/OpenCV")find_package(O...原创 2018-05-25 18:41:07 · 4245 阅读 · 0 评论 -
c++: c++ auto 详解
C++11 auto auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型,类似的关键字还有decltype。举个例子: int a = 10; auto au_a = a;//自动类型推断,au_a为int类型 cout << typeid(au_a).name() << endl;typeid运算符可以输出变量的...原创 2018-06-07 17:53:28 · 3490 阅读 · 0 评论 -
#undef 的用法及其意义
http://blog.csdn.net/lefter1986/article/details/8562798点击打开链接在Visual Studio2008中编写如下代码: #include <iostream> using namespace std; int main() { #define MODI 10 ...原创 2018-07-05 13:19:52 · 15948 阅读 · 0 评论 -
c++: cout将bool直接输出为true和false
//---------------------------------------//使用boolalpha输出为bool类型//使用noboolalpha输出为数字类型//--------------------------------------#include "stdafx.h"#include <iostream>using namespace std;...原创 2018-07-13 09:53:06 · 24901 阅读 · 1 评论 -
c++: C++中的explicit
定义C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色:是个构造器是个默认且隐含的类型转换操作符。所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的类型正好是AAA单参数构造器的参数类型, 这时候编译器就自动调用这个构造器,创建一个AAA的对象。 这样看起来好象很酷, 很方便。 但在某些情况下(见...原创 2018-04-16 22:13:34 · 275 阅读 · 0 评论 -
c++: C/C++ 宏定义中#、##、#@的区别
#表示:对应变量字符串化 ##表示:把宏参数名与宏定义代码序列中的标识符连接在一起,形成一个新的标识符连接符#@:它将单字符标记符变换为单字符,即加单引号。例如:#define B(x) #@x 则B(a)即'a',B(1)即'1',但B(abc)却不甚有效。[cpp] view plain copy#include <stdio.h> #define trace(x, for...转载 2018-04-03 18:38:22 · 294 阅读 · 0 评论 -
c++:strcpy函数的实现 - 字符串拷贝
已知strcpy函数的原型是:char *strcpy(char *dst, const char *src);实现strcpy函数: 1. 解释为什么要返回char * 2. 假如考虑dst和src内存重叠的情况,strcpy该怎么实现1. 实现:char * strcpy(char *dst,const char *src){ assert(dst != ...原创 2018-04-16 14:08:21 · 15969 阅读 · 0 评论 -
c++: C++类构造函数初始化列表详解
简介:构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如:class example {public: int a; float b;//构造函数初始化列表example1(): a(0),b(1) {}//构造函数内部赋值 example2() { a=0; b=1;...转载 2017-11-30 20:56:01 · 809 阅读 · 0 评论 -
c++: C/C++获取二维数组行列数
对于type array[A][B];形式的二维数组,可以通过计算sizeof获取行列数。sizeof(array[0][0])为一个元素占用的空间,sizeof(array[0])为一行元素占用的空间,sizeof(array)为整个数组占用的空间,行数 = sizeof(array)/sizeof(array[0]);列数 = sizeof(array[0])/sizeof(array[0][...转载 2017-12-11 14:45:04 · 4055 阅读 · 0 评论 -
c++: c++ make_heap, pop_heap, push_heap, sort_heap详解
std::pop_heap是一个实现快排的库将front(即第一个最大元素)移动到end的前部,同时将剩下的元素重新构造成(堆排序)一个新的heap。时间复杂度是: (2*log(last - first))例如:#include <iostream>#include <vector>#include <algorithm> using namespac...原创 2017-12-06 11:21:36 · 1935 阅读 · 0 评论 -
c++: C++中的STL中map用法详解
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识...转载 2018-01-23 15:13:42 · 306 阅读 · 0 评论 -
c++: abs() 与fabs() 的区别
abs( )主要用于对求整数的绝对值,在“stdlib.h”(或 <cstdlib>)头文件里面。而fabs( )主要是求精度要求更高的double ,float 型的绝对值,在<cmath>头文件里。两者在只#include<cmath>时都可以使用。 ...原创 2018-01-26 20:46:53 · 8126 阅读 · 0 评论 -
c++: qt键盘快捷键失灵
Qtcreator,发现代码编辑极其不方便,基本的快捷键Ctrl+C, Ctrl+V,全选Ctrl+A,以及代码对齐Ctrl+I都用不了,并且,在QT Creater->Tools->Options... 里找到environment->Keyboard,重新设置了,也不行。 在网上找帖子阅读,也没找到方法,突然在别人的只言片语当中,找到灵感,在Keyboard选项...原创 2018-02-27 18:56:12 · 2118 阅读 · 0 评论 -
c++: c++ map详解
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识...转载 2018-02-28 17:17:38 · 1838 阅读 · 1 评论 -
c++: binary search/二分法查找
查找方法最简单的查找——顺序查找,即从数组第一个元素开始,一个一个顺序查下去直到找到或查到最后一个元素为止。数据排列有序时,可以采用对半查找(binary search)。算法的执行效率比顺序查找高。散列查找:散列(hash)查找是最快的查找方法。前文介绍的两种查找方法都是将需查找的关键字值与表中的数据元素的关键字值进行比较而达到查找的目的。如果能找到一个函数 f(key),将关键字经过函数的运算...原创 2018-03-05 20:30:38 · 803 阅读 · 0 评论 -
c++: 直接插入排序,冒泡排序,快速排序,堆排序和归并排序
看了总结图,我这里就总结一下 直接插入排序,冒泡排序,快速排序,堆排序和归并排序,使用C++实现重新画了总结图直接插入排序整个序列分为有序区和无序区,取第一个元素作为初始有序区,然后第二个开始,依次插入到有序区的合适位置,直到排好序刚开始在我那本《数据结构》看到大概这样的实现void InsertSort(int arr[], int len) { int i, j; int te...转载 2018-03-06 15:57:00 · 2071 阅读 · 3 评论 -
c++: c++ 字符串解析
字符串解析:输入"2018_01_21"void fun(char* string, int& year, int& month, int& day){}void fun(char* string, int& year, int& month, int& day){ string_temp = splitData(string, "_"): ...原创 2018-03-13 18:09:25 · 2855 阅读 · 0 评论 -
c++: 什么是默认构造函数?
不传递任何参数就可以被调用的构造函数。默认构造函数分为两种:本身不带参数以及带参数,但每一个参数都带默认值。转载 2018-04-03 14:37:23 · 366 阅读 · 0 评论 -
c++: C++ auto 关键字的使用
1. auto定义auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型,类似的关键字还有decltype。举个例子: int a = 10; auto au_a = a;//自动类型推断,au_a为int类型 cout << typeid(au_a).name() << endl;typeid运算符可以输出变量的类型。程序的运行结...原创 2018-04-03 16:06:51 · 302 阅读 · 0 评论 -
C++ Use of deleted function error
原因: contains a std::unique_ptr. A std::unique_ptr cannot be copied or contains a std::shared_ptrA std::unique_ptr cannot be copied 解决方法:传入://cpp1A::getPTR(target_class_name)//cpp2...原创 2018-07-20 23:01:13 · 17450 阅读 · 0 评论