c/c++
文章平均质量分 58
chuncanL
这个作者很懒,什么都没留下…
展开
-
更改const的值
今天突发奇想,如果用一个指针指向const变量,再通过指针修改这个值会怎样?实验1const int a=1;int *b = &a;结果 test.c:20:14: error: invalid conversion from ‘const int*’ to ‘int*’ [-fpermissive]实验2#include<stdio.h>void b(int *a){ *a=*a原创 2017-03-18 09:54:41 · 3889 阅读 · 0 评论 -
io多路复用 select
io多路复用 select原创 2017-04-08 12:13:17 · 530 阅读 · 0 评论 -
C/C++的奇技淫巧
交换a,ba = a^b;b = a^b;a = a^b;//不担心越界计算二进制1的个数int num = 999;int counter=0;while(num){ counter++; m&=(m-1);}计算结构体内元素的偏移量宏#define FIND(struc,e) (size_t)&(((struc *)0)->e)原创 2017-04-02 18:34:01 · 782 阅读 · 0 评论 -
二叉树
一、基本概念二叉树的每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。 结点的层次(Level)从根开始定义,根为第一层,根的孩子为第二层。 二叉树的高度:树中结点的最大层次称为树的深度(Depth)或高度。 性质: 1、非空二叉树的第n层上至多有2^(n-1)个元素。 2、深度为h的二叉树至多有2^h-1个结点。 这个其实画个图也能明白 其他二叉原创 2017-04-15 10:29:32 · 377 阅读 · 0 评论 -
堆排序算法
一、堆排序算法的基本特性时间复杂度:O(nlgn) 与归并排序相同 最坏:O(nlgn) 空间复杂度:O(1). 不稳定。 二、堆堆的实现通过构造二叉堆(binary heap),实为二叉树的一种;由于其应用的普遍性,当不加限定时,均指该数据结构的这种实现。这种数据结构具有以下性质。 * 任意节点小于(或大于)它的所有后裔,最小元(或最大元)在堆的根上(堆序性)。 * 堆总是一棵完全原创 2017-04-19 17:46:56 · 511 阅读 · 0 评论 -
写string类学C++ 构造函数 重载 友元
一直没有系统学过c渣渣,现来写个string类学习下吧,不然找不的offer的这个mystring类是作为学习写构造函数,析构函数,函数重载,友元函数等。并没有将很多问题比如效率 mystring.cpp#ifndef _MYSTRING_H_#define _MYSTRING_H_#include<iostream>class Mystring{ private: ch原创 2017-04-16 20:22:51 · 446 阅读 · 0 评论 -
风骚的lambda
在c++11中,增加了不少的特性,才发现先的c++是如此的风骚lambda一个lambda表达式表示一个可调用的代码单元。我们可以将其理解为一个未命名的内联函数。与任何函数类似,一个lambda具有一个返回类型、一个参数列表、和一个函数体,但与函数不同,lambda可能定义在函数内部。一个lambda表达式具有如下形式[capture list](parameter list)-> return t原创 2017-05-02 22:11:40 · 543 阅读 · 0 评论 -
C++类的大小及虚函数表
之前用C的时候,停挺经常计算结构体空间的,现在突然用C++了,好像还不知道C++类大小怎么算的。 1. 类的组成我也不知道这么说是否正确,我觉得类主要有两类成员:数据成员,成员函数,并且 * 数据成员有静态和非静态之分 * 函数成员有静态,非静态和虚函数(virtual)之分 数据成员 在C++类中,数据成员的初始化是按照类中声明的先后顺序初始化,而与函数参数的传入顺序没有关系原创 2017-04-20 23:46:16 · 2173 阅读 · 0 评论 -
构造函数那些事儿
对于一个没有实例化的空类,编译器不会给他默认任何函数,当实例化一个空类后,编译器将根据需要生成相应的函数,包括: * 构造函数 * 析构函数 * 拷贝构造函数 * 赋值运算符号 * 地址操作符构造函数默认构造函数默认构造函数是在未提供显示初始化值时,被用来创建对象的构造函数。它可能是如下形式的。stock::stock(){} //stock是一个类如果为类定义了一个构造函数,那么也必原创 2017-04-21 14:26:52 · 609 阅读 · 0 评论