C/C++
文章平均质量分 65
一路阳光随行
Happy to life
展开
-
enum to string c++17 Magic Enum
Magic Enumheader-only library provides static reflection for enums (to string, from string, iteration) for C++17.c++17提供了将enum想String的转换#include <magic_enum.hpp>enum Color { RED = 2, BLUE = 4, GREEN = 8 };Color color = Color::RED;auto colo.原创 2020-07-11 14:48:39 · 2208 阅读 · 0 评论 -
enable_shared_from_this
一. 引入简单地说:enable_shared_from_this是为了解决在类的内部获取自己的 shared_ptr这件事情而存在的。众所周知, 每一个对象都能通过this 指针来访问自己的地址。this 指针也是所有成员函数的隐含参数。然而有些时候,我们需要的不仅是 this,而是一个 “this的智能指针”。这里有一个常见的场景: 1 2 3 4 5 6 7 8 9 10 11 ...转载 2020-06-29 16:48:30 · 2128 阅读 · 0 评论 -
合并K个排序链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* m...原创 2020-02-25 14:58:03 · 148 阅读 · 0 评论 -
static_assert
用来实现编译期间的断言,叫静态断言static_assert(条件,“提示信息打印”)语法:static_assert(常量表达式,要提示的字符串);如果第一个参数常量表达式的值为false,会产生一条编译错误,错误位置就是该static_assert语句所在行,第二个参数就是错误提示字符串。然后通过调用 abort 来终止程序运行。使用static_assert,我们可以在编译期...原创 2020-01-22 16:26:35 · 959 阅读 · 1 评论 -
github优秀的项目
https://github.com/sindresorhus/awesomehttps://github.com/vitalets/github-trending-repos原创 2019-11-30 16:22:48 · 220 阅读 · 0 评论 -
Making your C++ code robust
Making your C++ code robustIntroduction 在实际的项目中,当项目的代码量不断增加的时候,你会发现越来越难管理和跟踪其各个组件,如其不善,很容易就引入BUG。因此、我们应该掌握一些能让我们程序更加健壮的方法。 这篇文章提转载 2011-07-20 08:45:21 · 1324 阅读 · 0 评论 -
static修饰全局变量 局部变量和函数时候的区别
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方原创 2011-09-01 17:22:03 · 1746 阅读 · 0 评论 -
char[] 与 char *
#include #include void fun(char c[]){ printf("%d\n" , sizeof(c)); }void fun2(char &c){ printf("%d\n" , sizeof(c)); }原创 2011-09-02 09:39:15 · 1256 阅读 · 0 评论 -
关于sizeof中的内存对齐
实例如下#include int main(int argc, char *argv[]){ struct _THUNDER{ int iVersion; char cTag; char cAdv;原创 2011-09-02 16:02:12 · 1438 阅读 · 1 评论 -
关于指针字符串的知识
code: char * p = "hello world";任何试图对字符串中的元素的改变操作都会失败,因为在初始化一个字符串指针的时候,此时的字符串为常量,被定义为只读。如果想改变其中某个字符的话,可以使用字符数组:char ch[]={"hello worl原创 2011-09-04 22:08:27 · 639 阅读 · 0 评论 -
字符指针
一char * p = "hello world";任何试图对字符串中的元素的改变操作都会失败,因为在初始化一个字符串指针的时候,此时的字符串为常量,被定义为只读。如果想改变其中某个字符的话,可以使用字符数组:char ch[]={"hello world"};原创 2011-09-04 22:13:25 · 526 阅读 · 0 评论 -
回文字符串的测试
#include using namespace std;void test_int_circle(const int a){ int num = a; int b[10]; int i = 0; int begin, end; int原创 2011-09-08 10:37:55 · 1087 阅读 · 0 评论 -
strstr函数实现
#include using namespace std;const char * myStrstr(const char * src, const char *sub_str){ for (int index = 0; src[index] != '\0'; i原创 2011-09-08 10:40:50 · 630 阅读 · 0 评论 -
从一个字符串中删除一个子串后返回该字符串和包含的子串的个数
直接上代码#include #include #include #include int delete_char(const char * str, const char * sub_str, char * result){ assert( str原创 2011-09-08 10:39:36 · 2134 阅读 · 1 评论 -
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在原创 2011-09-08 16:25:17 · 1427 阅读 · 3 评论 -
C语言条件编译详解
预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。 在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理转载 2011-09-08 16:04:32 · 1289 阅读 · 0 评论 -
从B树、B+树、B*树谈到R 树
连接地址:http://blog.csdn.net/v_july_v/article/details/6530142转载 2011-09-11 16:03:19 · 631 阅读 · 0 评论 -
定义交换两个数据交换的方法
第一种:#define mySwap(a, b) ( a ^= b; b ^= a,;a^= b ;) 这种方式不会造成数据的溢出第二种: 2. #define mySwap(a, b) (a = a + b; b = a - b;a原创 2011-08-25 17:08:22 · 765 阅读 · 0 评论 -
递归与迭代的区别
递归: 调用自己的编程方法,即是自己调用自己,A调用A,使用递归的时候需要注意的两点: 1, 必须在过程或是函数中调用自己 2,必须有递归出口来终止递归过程迭代: 用原值推算出一个新值,即是A调用B递归中一定有迭代,但是反之不成立,程序设计的原创 2011-08-26 09:48:48 · 1587 阅读 · 1 评论 -
this pointer
深入探讨this指针 为了写这篇文章,准备了好长时间,翻遍了箱底的书籍。但是现在还是不敢放开手来写,战战兢兢。不是担心自己写错,而是唯恐自己错误误导别人。同时也希望这篇文章能给你一点收获。既然是深入探讨this指针,所以建议初学者,最好具有一定编译基础,调试基础。如果大家转载 2011-08-29 21:38:39 · 661 阅读 · 0 评论 -
面试题
一、简答1、什么是this指针,作用是什么? 答:指向对象本身的指针,this指针作为一个隐含参数传递给非静态成员函数,用以指向该成员函数所属类所定义的对象。当不同的对象调用同一个类的成员函数代码时,编译器会依据该成员函数的this指针所指向的不同对象来确定应该引用哪个原创 2011-08-30 09:12:14 · 603 阅读 · 0 评论 -
无符号数与有符号数的操作
void sum(void) { unsigned int a = 6; int b = -10; if(a + b > 6) puts(">6"); else puts("<原创 2011-08-29 16:57:02 · 1957 阅读 · 2 评论 -
求数组中第二大的元素
题目:求出数组中第二大的数,要求时间为O(n),其中n为数组的长度代码如下:int _tmain(int argc, _TCHAR* argv[]){ int a[]={2,2,3,5,-3,9}; int temp = a[0]; int min = -原创 2011-08-29 22:29:05 · 1311 阅读 · 0 评论 -
const
关键字const并不能把变量变成常量!在一个符号前加上const限定符只是表示这个符号不能被赋值,也就是它的值对于这个符号来说是只读的,但它并不能防止通过程序内部(甚至外部)的方法来修改这个值。const最有用指出就是用它来限定函数的形参,这样该函数将不会修改实参指针所指的数据,转载 2011-08-26 17:05:18 · 547 阅读 · 0 评论 -
volatile
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象转载 2011-08-31 10:04:23 · 640 阅读 · 0 评论 -
已知二叉树的中序和后序求前序
例子,后序遍历为 gbdehfca,中序遍历为 dgbaechf 后序遍历中的最后一个元素是根节点,a,然后查找中序中a的位置 把中序遍历分成 dgb a echf,而因为节点个数要对应 后序遍历分为 gbd ehfc a,gbd为左子树,ehfc为右子树,这样又可以原创 2011-10-10 20:32:58 · 18139 阅读 · 2 评论 -
模板
模板是C++在90年代引进的一个新概念,原本是为了对容器类(container classes)的支持[1],但是现在模板产生的效果已经远非当初所能想象。简单的讲,模板就是一种参数化(parameterized)的类或函数,也就是类的形态(成员、方法、布局等)或者函数的形态(转载 2011-09-29 22:00:10 · 644 阅读 · 0 评论 -
基类中声明为virtual ,派生类中的同名函数
在c++中的继承中,如果基类声明了一个函数为虚函数,那么在派生类中不用声明同名函数为虚函数(不需要加virtual)也可以实现该函数为虚函数。 派生类继承了基类的属性,同名函数被视为与基类具有相同属性的函数。 如果基类为纯虚函数的话,那么派生类中也不用声明原创 2011-10-17 09:22:14 · 8719 阅读 · 0 评论 -
main函数的参数与返回值
1. C 在 C89 中,main( ) 是可以接受的。Brian W. Kernighan 和 Dennis M. Ritchie 的经典巨著 The C programming Language 2e(《C 程序设计语言第二版》)用的就是 main( )原创 2011-10-17 11:07:14 · 1204 阅读 · 0 评论 -
malloc/free与new/delete的区别
http://blog.csdn.net/hackbuteer1/article/details/6789164 相同点:都可用于申请动态内存和释放内存 不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是转载 2011-10-07 10:29:05 · 748 阅读 · 0 评论 -
c文件操作
文件操作有以下几个内容: 1.将数据从内存输出到文件上,也称“写”文件。 2.将数据从文件输入到内存,也称“读”文件。一.怎样进行文件操作: 1.设立文件指针 进行文件操作时,必须在程序一开始就先定义文件指针。转载 2011-10-17 14:27:50 · 635 阅读 · 0 评论 -
2012届it公司面试题
九月腾讯,创新工场,淘宝等公司最新面试十三题引言 曾记否,去年的10月份也同此刻一样,是找工作的高峰期,本博客便是最初由整理微软等公司面试题而发展而来的。如今,又即将迈入求职高峰期--10月份,而本人也正在找下一份工作中,所以,也不免关注了网上和我个人建的算转载 2011-10-08 16:04:09 · 7658 阅读 · 2 评论 -
class中缺省的4个函数的实现
class类中默认会实现4个函数,分别为默认构造函数,拷贝构造函数,析构函数和=运算符重载#include using namespace std;class myString{ public: myString(const char *str=NULL原创 2011-10-19 10:24:06 · 1238 阅读 · 0 评论 -
一个for循环输出二维数组
一个for循环打印出一个二维数组:代码:int main(int argc ,char **argv){ int a[2][3]={{1,2,3},{4,5,6}}; for(int index = 0; index < 2*3; index++) printf("%d ",a[index/3][index%3]); return 0原创 2011-10-19 22:32:12 · 3104 阅读 · 0 评论 -
Big-endian和little-endian
Big-endian和little-endian(转载)Big-endian和little-endian是描述排列存储在计算机内存里的字节序列的术语。Big-endian是一种大值的一端(序列中更典型值)存在前面(在最小的存储地址)的顺序。Little-endian是一种小值的一端(序列中较不典型的值)存储在前的顺序。比如,在Big-endian的电脑中,需要两个字节把十六位数转载 2011-10-22 14:20:12 · 730 阅读 · 0 评论 -
指针
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr转载 2011-10-24 14:26:34 · 497 阅读 · 0 评论 -
快速排序的递归实现
直接给代码:#include "stdafx.h"//快速排序 void quick_sort(int a[], int low, int high) { int i = 0, j = 0; int pivot = 0; if(low < high) { pivot = a[low];原创 2011-08-30 09:32:47 · 546 阅读 · 0 评论 -
c++面向对象编程必备“良方”
FROM: http://blog.csdn.net/zhanxinhang 药方1 ☞ 必需时刻明白面向对象编程中要扮演的两个角色,一个就是你,类的设计者,一个就是用户,类的使用者,你的设计是针对用户而言的,当然你也可能是身兼两职,同时是设计者又是用户。药方2 ☞ 设计一个类时,将声明放于头文件,定义放在cpp文件中,因为类是给用户使用的,将声明放在头文件中,用户便可以方便使用,转载 2011-11-23 09:16:41 · 609 阅读 · 0 评论 -
c++中的虚函数
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的转载 2011-09-02 11:31:31 · 43920 阅读 · 18 评论 -
vs2010调试快捷键
F9:设置断点ctrl+F9:启用/停止断点ctrl+shift+F5:删除全部断点F5: 开始调试ctrl+shift+F5:重新调试shift+F5:结束调式原创 2012-03-26 21:53:04 · 1839 阅读 · 0 评论