C++
文章平均质量分 72
hotkitchen
这个作者很懒,什么都没留下…
展开
-
[C++] template template parameter 模板模板参数
1.模板模板参数指的是模板的参数又是一个模板。示例:#include <iostream>#include <list>using namespace std;template<typename Foo>Foo calc(const Foo& a, const Foo& b){ return a + b;}tem...原创 2018-10-24 19:49:14 · 1244 阅读 · 0 评论 -
[C++]STL pair
本文转自http://blog.csdn.net/wangran51/article/details/8853565 Pair类型概述pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: pair a;表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始转载 2017-05-08 21:42:25 · 273 阅读 · 0 评论 -
[C++]STL中vector容器 begin()与end()函数、front()与back()的用法
本博客转自http://blog.csdn.net/duan19920101/article/details/51679517一、begin函数函数原型:iterator begin();const_iterator begin();功能:返回一个当前vector容器中起始元素的迭代器。 二、end函数函数原型:iterator end();cons转载 2017-05-08 21:26:47 · 2769 阅读 · 0 评论 -
[C++]关键字extern
本博客转自http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一转载 2017-05-08 21:07:45 · 295 阅读 · 0 评论 -
[C++]条件编译——#if #ifdef 的作用
本文转自http://www.cnblogs.com/renyuan/archive/2013/05/22/3092362.html 一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。转载 2017-05-08 19:58:06 · 1238 阅读 · 0 评论 -
[C++]读写txt文件和从txt文件中读取数据写入数组中
一、利用C++读写txt文件:全篇转载http://blog.csdn.net/lh3325251325/article/details/4761575(他也是转载的)下面的代码没有逐一验证,主要是为了学习这个框架。#include #include #include using namespace std; int main(转载 2017-04-24 21:36:57 · 12291 阅读 · 0 评论 -
[C++]linux下错误的捕获:errno和strerror的使用
该博客转自 http://blog.csdn.net/starstar1992/article/details/52756387 linux下错误的捕获:errno和strerror的使用 经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的转载 2017-05-08 19:16:52 · 5062 阅读 · 0 评论 -
[C++]strcpy和strcpy_s itoa和_itoa_s
这篇博客记录了strcpy和strcpy_s、itoa和_itoa_s的用法,由于网上资料已经非常齐全,这里均是转载内容。strcpy和strcpy_s:http://blog.csdn.net/johnny710vip/article/details/66811600itoa和_itoa_s:http://www.cnblogs.com/cindy-hu-23/p/3548211.h转载 2017-04-24 21:12:24 · 675 阅读 · 0 评论 -
[C++][基础概念]main函数中的参数argc和argv的含义和用法
注:这篇博客主要是转载http://blog.csdn.net/dcrmg/article/details/51987413,但同时也加入了自己的理解和总结。一、概念argc是argument count的缩写,表示传入main函数的参数的个数;argv是argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的路径和名称,因此转载 2017-04-24 20:10:32 · 1256 阅读 · 0 评论 -
[C++笔试]运算符的重载
1.已知表达式++a中的"++"是作为成员函数重载的运算符,则与++a等效的运算符函数调用形式为()a.operator++()a.operator++(0)a.operator++(int)operator++(a,0)解答:运算符重载为类的成员函数时,不需要显式说明参数,即函数没有形参。后置单目运算符重载为类的成员函数时,函数要带有一个整型形参。即:前置op原创 2017-05-23 18:29:24 · 586 阅读 · 0 评论 -
[C++]vector中的insert、resize和reserve的用法
本文总结了vector的insert和resize的用法一、insertiterator insert( iterator loc, const TYPE &val ); void insert( iterator loc, size_type num, const TYPE &val ); void insert( iterator loc, input_iterator sta转载 2017-05-17 21:43:15 · 1977 阅读 · 0 评论 -
[C++]函数的重载、重写和重定义的区别
本文转自http://m.blog.csdn.net/article/details?id=484965931.函数重载(overload)函数重载是指在一个类中声明多个名称相同但参数列表不同的函数,这些的参数可能个数或顺序,类型不同,但是不能靠返回类型来判断。特征是:(1)相同的范围(在同一个作用域中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字转载 2017-05-19 09:44:28 · 635 阅读 · 0 评论 -
[C语言]头文件之stdarg
一、stdrag简介 #include standard arguments stdarg.h是C语言中C标准函数库的头文件,stdarg是由standard(标准)和 arguments(参数)简化而来,主要目的为让函数能够接收可变参数。C++的cstdarg头文件中也提供这样的功能;虽然与C的头文件是兼容的,但是也有冲突存在。二、成员介绍原创 2017-03-19 16:52:12 · 1708 阅读 · 0 评论 -
[C++] Variadic Fuction Template 可变参数函数模板
可变参数函数模板(variadic function template)主要使用了包扩展(pack expansion)的方式,即”...”,把一个模式(pattern)扩展为包中每一个元素(element)的形式;可变参数函数模板一般会使用递归(recursive)来处理包(pack)参数。一般来说需要两个函数:需要一个非可变参数(nonvariadic)函数模板,当结束递归,最后一次调用时...原创 2018-10-24 19:46:55 · 391 阅读 · 0 评论 -
[C++] pointer-like classes 和 function-like classes
1. pointer-like class 意思是像指针的类,是指一个类被设计成像指针一样,可以当做指针来使用。下面来介绍两种常见的指针类:智能指针和迭代器。a. 智能指针namespace ll { template<class T> class shared_ptr { public: T& operator* ()...原创 2018-10-23 22:15:09 · 351 阅读 · 0 评论 -
[C++]含指针的类的编写
//string.h#ifndef __MYSTRING__#define __MYSTRING__#define _CRT_SECURE_NO_WARNINGSclass String{public: //默认构造函数,并设置默认值 String(const char* cstr = 0); //Big Three三大函数:拷贝构造,拷贝赋值,析构。编译器会自动给出三大...原创 2018-10-23 21:20:42 · 373 阅读 · 0 评论 -
[C++] 不含指针的类的编写
//complex.h#ifndef __MYCOMPLEX__ //1.防卫式的声明#define __MYCOMPLEX__class complex; complex& __doapl (complex* ths, const complex& r);complex& __doami (complex* ths, const complex&a...原创 2018-10-23 21:19:19 · 332 阅读 · 0 评论 -
[C++]转换函数
1.对于系统的预定义的基本数据类型,C++提供了两种类型转换方式:隐式类型转换和显示类型转换。int a=5,sum;double b=5.55;sum=a+b; //隐式类型转换:编译系统首先将a的值由int转换为double,然后与b相加得到10.55,在向整形变量sum赋值时,将10.55转换为整形数10,赋值给变量sum;cout<<"隐式转换:a+b="&l...原创 2018-10-22 21:54:50 · 789 阅读 · 1 评论 -
[C++]C++中的文件路径表示
本文转自http://blog.csdn.net/zdhlwt2008/article/details/46791407文件路径的表示可以分为绝对路径和相对路径: 绝对路径表示相对容易,例如 //pDummyFile = fopen("D:\\vctest\\glTexture\\texture\\dummy.bmp", "rb"); 给出了从盘符开始的全部路径,这里需要注意的是“转载 2017-05-31 19:23:57 · 1144 阅读 · 0 评论 -
[C++]头文件重复包含问题
本文转自http://www.cnblogs.com/geore/p/5803944.html,主要记录了C++中头文件重复包含的问题。关于头文件重复包含的问题,以前一直不太清楚,今天特意翻了一下参考书和网上查阅资料,有了如下的理解: 这样说明,如果定义了头文件A.h,B.h和源文件C.cpp。如果我们在A.h中写上一个函数,在B.h中include A.h,然后再在C.cp转载 2017-05-31 18:49:30 · 1237 阅读 · 0 评论 -
[Redis][数据结构]sds的学习
最近打算花较多的时间学习一下Redis的源代码,参考的主要是huangz的《redis设计与实现》和一些博客,争取坚持下去,完成这个艰巨的任务。 这篇blog记录了读完sds.h和sds.c两个文件后的一些疑惑和总结。 1.对 struct sdshdr *sh = (void*)(s-(sizeof(struct sdshdr)));的理解。 首先看下 S原创 2017-03-20 21:41:06 · 435 阅读 · 0 评论 -
[Redis]在VS2015下配置Pthreads文件
一、安装平台 Win7\8\10 64位 Microsoft Visual Studio 2015二、下载pthreads-w32-2-9-1tp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip解压后共有三个文件夹Pre-built.2pthreads.2Queu转载 2017-03-19 09:07:19 · 828 阅读 · 1 评论 -
[C++笔试]类及继承的题目
问题:#include "stdio.h"class A{public: int _a; A() { _a = 1; } void print() { printf("%d", _a); }};class B : public A{public: int _a; B() { _a = 2; }};int main(){ B b; b原创 2017-05-23 16:38:32 · 2134 阅读 · 0 评论 -
[笔试]大端、小端
首先介绍大端和小端的基础知识,转自:http://blog.csdn.net/zhaoshuzhaoshu/article/details/37600857/1. 什么是大端,什么是小端:所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。2.为什么会有转载 2017-05-23 17:53:19 · 381 阅读 · 0 评论 -
[C++][基础概念](五)继承的学习
对C++中的继承概念一直比较陌生,下面通过几道题来学习它。 1.下面描述中,表达错误的是(BCD)A.公有继承时基类中的public成员在源生类中仍是public的 正确B.公有继承时基类中的private成员在源生类中仍是public的 错误,不可见C.私有继承时基类中的protected成员在源生类中仍是public的 错误,privateD.私有继承时基类中的pu原创 2017-04-10 14:59:56 · 655 阅读 · 0 评论 -
[C++][基础概念](四)typedef的学习
在学习Redis中的dict.h文件中,遇到了如下的语句:typedef void (dictScanFunction)(void *privdata, const dictEntry *de);对此我感到十分困惑,找了关于typedef和函数指针的相关资料,现总结如下:一、typedef的用法:typedef 类型名称 类型标识符二、typedef主要应用的几种形式:1.为基本数原创 2017-03-27 14:40:31 · 489 阅读 · 0 评论 -
[C语言][编程]将字符串分割到字符串数组中
学习Redis的sds.c文件中,有一个关于将字符串分割到字符串数组中的代码,我学习并实现了一下,但没有考虑内存问题和其它的一些误操作的问题,换言之,只实现了最基本的功能。//该程序实现的是将字符串分割成子字符串/*例如输入"123/456/7/89/1","/"作为分隔符,程序会返回:123 456 7 89 1*/#include#includevoid splitlen(c原创 2017-03-22 21:37:10 · 13626 阅读 · 0 评论 -
[C++][基础概念](三)char的学习
1.定义char:char p[n];表示定义了含有n个元素的char型,注意其中最大地址是p[n-1],char p[3]="abc";编译器会报错,因为还要含有'\0'。2.char a[];和char* a的区别:char a[];a代表的是字符串的首地址,s保存的也是字符串的首地址,这样看来a和s就完全一样,但事实不是这样。(1)char* s1="abc";s1是一个指针,这原创 2017-03-20 21:04:07 · 789 阅读 · 0 评论 -
[C++学习]关于getmemory的总结
1.关于动态申请内存的问题 出现率极高程序的局部变量存在于(栈)中程序的全局变量存在于(静态存储区)中程序动态申请的数据存在于(堆)中<1>[cpp] view plain copy print?void GetMemory(char *p) { p = (char *)malloc(100); } void Test1(void) { char *str =转载 2017-03-21 17:44:35 · 646 阅读 · 1 评论 -
[C++][基础概念](一)结构体所占内存大小的判断
以下内容是在做牛客网的选择题遇到的困惑和总结,其中主要是引用的别人的博客或者答案,和加入了自己的一些总结,方便以后翻过来看时更加有条理。一、理论说明 一个结构体变量定义完之后,其在内存中的存储并不等于其所包含元素的宽度之和。1.有两个原则:原则一:结构体中元素是按照定义顺序一个一个放到内存中去的,但并不是紧密排列的。从结构体存储的首地址开始,每一个元素放置到内存中时,原创 2017-03-16 22:01:10 · 1711 阅读 · 0 评论 -
[C++][基础概念](二)static关键字
这篇博客主要是参考http://www.cnblogs.com/BeyondAnyTime/archive/2012/06/08/2542315.html 学习的,但是其中的程序无法运行,我稍做修改,完成了此篇博客。 C++中static有两种用法:面向过程程序设计中的static和面向对象程序中的static。前者应用于普通变量和函数,后者主要是在类的应用。一、面向过程转载 2017-03-19 20:55:06 · 331 阅读 · 0 评论 -
[C++][STL](一)vector和stack的学习
今天学习了一点关于STL的知识,遇到一些问题,先小结如下:vector1. 如何引用STL?#include2. 如何初始化vector的元素?利用构造函数来初始化vector,简单地可以通过vectorv{1,2,3,4,5,6,7,8};3. 如何顺序输出v?多种方法: 1.用auto避免纠结 vector v{1,2,3,4,5,6,7,8}原创 2017-02-28 20:55:56 · 3361 阅读 · 0 评论 -
[数据结构]二叉树
1.构建和遍历二叉树#include#includeusing namespace std;typedef struct node { struct node *leftchild; struct node *rightchild; char data;}BiTreeNode, *BiTree;void CreateBiTree(BiTree &T) { char c; ci原创 2017-03-16 21:57:11 · 344 阅读 · 0 评论 -
[c++学习]剑指offer1题的学习笔记
这篇博客记录了学习第一题时遇到的困惑和解决方法:1. 为什么返回对象的引用?参考 http://www.cnblogs.com/codingmengmeng/p/5871254.html重载运算符返回void、返回对象本身、返回对象引用。返回对象引用基于下面两个原因:a.允许进行连续赋值b. 虽然返回对象也可以连续赋值,但是返回对象时要调用拷贝函数和析构函数导致不必要的开销原创 2017-03-31 16:01:16 · 378 阅读 · 0 评论 -
[C++](转载)虚函数表解析
C++ 虚函数表解析 陈皓http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数转载 2017-04-10 19:39:16 · 287 阅读 · 0 评论 -
[C++]纯虚函数和抽象类
本文转自http://blog.csdn.net/lidiya007/article/details/53220786 在介绍抽象类之前,我们先介绍一下纯虚函数。1.纯虚函数 在基类中仅仅给出声明,不对虚函数实现定义,而是在派生类中实现。这个虚函数称为纯虚函数。普通函数如果仅仅给出它的声明而没有实现它的函数体,这是编译不过的。纯虚函数没有函数体。 纯虚函数需要在声明之后加个转载 2017-05-23 16:30:02 · 548 阅读 · 0 评论 -
[C++]随机函数rand()和srand()的用法
这篇博客转载于 http://blog.csdn.net/candyliuxj/article/details/4396666一、rand() 函数名: rand 功 能: 随机数发生器 用 法: int rand(void); 所在头文件: stdlib.h 函数说明 :转载 2017-05-03 20:44:34 · 411 阅读 · 0 评论 -
[C++]bitset类用法
有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件。在本书提供的例子中,假设都使用了std::bitset的using声明:[cpp] view plain copy转载 2017-05-03 17:06:56 · 384 阅读 · 0 评论 -
[C++]图的邻接矩阵、邻接表及其相互转化和邻接表的广度遍历、深度遍历
先贴程序,明天再写详细的原理和过程#include#include#includeusing namespace std;const int MAXVEX = 100;typedef char VertexType;typedef int EdgeType;//邻接矩阵typedef struct{ int num; EdgeType weight;}ElemType原创 2017-05-10 22:17:36 · 12012 阅读 · 0 评论 -
[C++]使用位逻辑运算来实现位向量的理解
本博客转自 http://www.cnblogs.com/marsdu/p/3181734.html这是一道非常基础的题目,考察对位运算的理解,好看题目只觉得好眼熟,然后(手贱)瞟了一眼答案,第一遍没看明白答案的内容,就上网查了一下,网上的人要么就是一笔带过(大概是觉得太简单),要么就是误人子弟。解决题目之前应该先搞清楚题目是干嘛的:位向量顾名思义就是用位来存储一个数,文中说存储N转载 2017-05-03 10:57:27 · 672 阅读 · 0 评论