
C++
文章平均质量分 75
与狼共舞-C
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
模板特例化,偏特化
//函数模板通用版templatevoid fun(T a){ cout << "The main template function(): " << a << endl;}//对int类型特例化template<>void fun(int a){ cout << "Specialized template for int type: " << a << endl;}原创 2016-10-16 21:00:51 · 877 阅读 · 0 评论 -
lambda
1.为什么需要有lamdba?:很多泛型算法都有一个允许我们传递可调用对象(或可调用表达式)的版本(我们将这个可调用的对象或表达式暂称为谓词),例如:版本一ForwardIterator adjacent_find(ForwardIterator first, ForwardIterator last) ,版本二ForwardIterator adjacent_find(ForwardIter原创 2016-09-16 17:27:19 · 358 阅读 · 0 评论 -
c++继承体系中的拷贝控制成员的定义
/***验证继承体系中的拷贝控制成员***/#includeusing namespace std;class Base {public: Base() = default; Base(int i, int j) :num1(i), num2(j) { cout << "Base construct" << endl; } Base(const Base& rhs) :num1(r原创 2016-10-11 17:09:24 · 855 阅读 · 0 评论 -
new/operator运算符,operator new/operator delete函数,定位new
new,delete运算符:当我们使用一条new表达式时,实际上执行了三步操作:第一步,new表达式调用一个名为operator new(或者operator new[])的标准库函数,该函数分配一块足够大的,原始的,未命名的内存空间以便存储特定类型的对象(或对象数组);第二部,编译器运行相应的构造函数以构造这些对象,并为其传入初始值;第三部,返回一个指向该对象的指针。当我们使用一条dele原创 2017-03-05 11:05:25 · 495 阅读 · 0 评论 -
STL中traits编程技法
在STL中迭代器是容器与泛型算法之间的粘合剂。要想使泛型算法独立于容器,泛型算法必须以迭代器为对外接口,同时要想容器能独立于泛型算法,容器必须有专属的迭代器。1.迭代器相应型别在算法中运用迭代器时,很有可能会用到迭代器的相应型别。假设算法要以“迭代器所指之物的型别(value_type)”定义对象,如何是好?解决办法是利用函数模板的参数推导机制。例如:但是如果我们要使用valu原创 2017-03-06 21:37:45 · 436 阅读 · 0 评论 -
顺序容器结构
vector:vector维护的是一个连续的线性空间,所以不论其元素型别为何,普通指针都可以作为vector的迭代器。vector的主要数据结构如下:templateclass vector{...typedef value_type* iterator;... iterator start; iterator finish; iterator end_of_stora原创 2017-03-06 22:35:50 · 223 阅读 · 0 评论 -
C++中两个类相互引用的解决办法
一、问题描述现在有两个类A和B需要定义,定义A的时候需要用到B,定义B的时候需要用到A。二、分析A和B的定义和调用都放在一个文件中肯定是不可以的,这样就会造成两个循环调用的死循环。根本原因是:定义A的时候,A的里面有B,所以就需要去查看B的占空间大小,但是查看的时候又发现需要知道A的占空间大小,造成死循环。解决方法:(1)写两个头文件A.h和B.h分别用于声明类A和B;(原创 2017-05-18 10:36:13 · 2013 阅读 · 0 评论 -
C++ const原理
抛出问题 下列代码输出的结果是什么?#include#includeusing namespace std;int main(){/*在c++下*/ const int a = 10; //a = 100;error int *p = (int*)(&a); *p = 100;//正确 cout << *p << endl; cout转载 2017-09-06 12:01:23 · 434 阅读 · 0 评论 -
C++头文件与源文件的作用
一、C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。C+ +语言支持“分别编译”(separatecompilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。.cpp文件里的东西都是相对独立的...转载 2018-11-03 12:51:08 · 191 阅读 · 0 评论 -
关联容器模板型别
template <class Key, class Value, class KeyOfValue, class Compare, class Alloc = alloc>class rb_tree {}型别说明:Key 键值类型 Value 元素型别 KeyOfValue 仿函数,由元素型别得出键值型别 Comapre 仿函数,比较键值原创 2016-11-03 14:49:08 · 316 阅读 · 0 评论 -
友元的应用
友元:1.将非成员的接口函数申明为友元:使接口函数可以访问类的私有成员,在类中申明友元函数(加上friend,友元申明),最好也在类外申明一次(不用加上friend)2.友元类:如果定义了一个友元类,则友元类的成员函数可以访问此类包含的非公有成员在内的所有成员3.令其他的类的成员函数作为一个类的友元函数原创 2016-03-25 13:02:05 · 286 阅读 · 0 评论 -
C++中实数(以float为例)的存储方式
(1)float 型在内存中存在方式 a.float型转化成科学计数法的二进制形式:b1.b2b3b4b5.......*2^k,b1定为1,b1.b2b3b4b5...称为尾数,k称为指数 b.float型一共32位(符号占1位,指数占8位,尾数占23位,小数点不计入)(2)float型的范围与表示精度 a.范围:...原创 2015-11-10 18:18:08 · 2481 阅读 · 0 评论