C++提高
文章平均质量分 73
BUS375
不积跬步无以至千里,不积小流无以成江海!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉树的中序非递归遍历c语言版
由于c语言没有c++的STL库,我们无法借助c++的stack库实现二叉树的非递归遍历,但是,我们完全可以自己打造一个c语言版的stack库。本篇博文就是借助我们之前在栈的链式 存储这篇博文实现的程序。当然,你也可以把它编译成动态库dll(可以参考)放到自己的工程项目中。 #define _CRT_SECURE_NO_WARNINGS #include #include #inclu原创 2016-10-06 07:56:54 · 7106 阅读 · 1 评论 -
for_each和transform用法比较
#include #include #include #include #include #include #include #include #include using namespace std; template void printV( T &v) {原创 2016-09-30 16:50:17 · 634 阅读 · 0 评论 -
STL常用的查找算法(13)
函数名 头文件 函数功能 adjacent_find 在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的ForwardIterator .否则返回last.重载版本使用输入的二元操作符代替相等的判断 函数原形 template FwdIt adjacent_find(原创 2016-10-01 08:54:15 · 396 阅读 · 0 评论 -
STL常用排序算法
排序和通用算法(14个):提供元素排序策略 函数名 头文件 函数功能 inplace_merge 合并两个有序序列,结果序列覆盖两端范围。重载版本使用输入的操作进行排序 函数原形 template void inplace_merge(BidIt first, Bid原创 2016-10-01 09:50:33 · 400 阅读 · 0 评论 -
STL常用的拷贝替换算术集合算法
#include #include #include #include #include #include #include #include #include #include using namespace std; template void printElem原创 2016-10-01 11:50:16 · 415 阅读 · 0 评论 -
STL容器算法迭代器的设计理念
1)STL的容器通过类模板技术,实现数据类型和容器模型的分离。 2)STL的迭代器技术实现了遍历容器的统一方法;也为STL的算法提供了统一性 3)STL的函数对象实现了自定义数据类型的算法运算。(算法和) 4)具体例子:transform算法的输入,通过迭代器first和last指向的元算作为输入;通过result作为输出;通过函数对象来做自定义数据类型的运算。原创 2016-09-30 15:07:39 · 381 阅读 · 0 评论 -
C++基础面试题
目录视图摘要视图订阅 深度学习代码专栏 攒课--我的学习我做主 开启你的知识管理,知识库个人图谱上线 基础笔试题在此保存 2013-10-14 19:58 936人阅读 评论(0) 收藏 举报 分类: 程序员面试(9)转载 2016-10-08 09:27:33 · 449 阅读 · 0 评论 -
void*指针的用法
指针有两个属性:指向变量/对象的地址和长度 但是指针只存储地址,长度则取决于指针的类型 编译器根据指针的类型从指针指向的地址向后寻址 指针类型不同则寻址范围也不同,比如: int*从指定地址向后寻找4字节作为变量的存储单元 double*从指定地址向后寻找8字节作为变量的存储单元 1.void指针是一种特别的指针 void *vp //说它特别是因原创 2016-10-02 15:16:51 · 3783 阅读 · 1 评论 -
STL综合案例-模拟演讲比赛
案例:学校演讲比赛 1)某市举行一场演讲比赛,共有24个人参加,按参加顺序设置参赛号。比赛共三轮,前两轮为淘汰赛,第三轮为决赛。 2)比赛方式:分组比赛 第一轮分为4个小组,根据参赛号顺序依次划分,比如100-105为一组,106-111为第二组,依次类推,每组6个人,每人分别按参赛号顺序演讲。当小组演讲完后,淘汰组内排名最后的三个选手,然后继续下一个小组的比赛。 第二轮分为2个小组,原创 2016-10-03 09:54:35 · 1630 阅读 · 0 评论 -
预定义函数对象和函数适配器案例
#include #include #include #include #include #include #include #include using namespace std; //函数对象 class IsGreat { public: IsGreat(int n) {原创 2016-09-30 15:16:32 · 331 阅读 · 0 评论 -
c++模板类实现线性表顺序存储
SeqList.h #pragma once template class SeqList { public: SeqList(void); SeqList(int capacity); ~SeqList(void); int getLength(); int getCapacity(); int insert(T &t,int pos); int get(int pos,原创 2016-10-05 11:49:13 · 729 阅读 · 0 评论 -
c++模板类实现线性表链式存储
对比c语言实现线性表的链式存储,分析不同之处! LinkList.h #pragma once //在插入元素时,模板类中应该把每个T保存下来 //模板类中应该能后 分配节点 缓存节点 //怎么样缓存===> 做链表 template struct Node { T t; Node *next; }; template class LinkList { public: Lin原创 2016-10-08 09:12:50 · 751 阅读 · 0 评论 -
C++ new关键字深入理解
“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。 new的过程 当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A: class A {转载 2016-11-17 16:28:19 · 28994 阅读 · 3 评论 -
父类子类指针相互转换问题
文章转载自 http://www.cnblogs.com/mu-tou-man/p/3925433.html 父类子类指针相互转换问题 1.当自己的类指针指向自己类的对象时,无论调用的是虚函数还是实函数,其调用的都是自己的: 2.当指向父类对象的父类指针被强制转换成子类指针时候,子类指针调用函数时,只有非重写函数是自己的,虚函数是父类的; 3.当指向子类对象的子类指针被强制转换成父转载 2016-11-30 10:41:43 · 864 阅读 · 0 评论 -
C++编译期多态与运行期多态
前言 今日的C++不再是个单纯的“带类的C”语言,它已经发展成为一个多种次语言所组成的语言集合,其中泛型编程与基于它的STL是C++发展中最为出彩的那部分。在面向对象C++编程中,多态是OO三大特性之一,这种多态称为运行期多态,也称为动态多态;在泛型编程中,多态基于template(模板)的具现化与函数的重载解析,这种多态在编译期进行,因此称为编译期多态或静态多态。在本文中,我们将了解:转载 2016-11-17 16:39:01 · 457 阅读 · 0 评论 -
struct和typedef struct
struct和typedef struct分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu转载 2016-11-22 16:06:33 · 292 阅读 · 0 评论 -
C++的四种强制类型转换
转载自:http://www.cnblogs.com/alexqdh/archive/2011/06/09/2075713.html C++的四种强制类型转换,所以C++不是类型安全的。分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast 为什么使用C风格的强制转换可以把想要的任何东西转换成合乎心意的类型。那为什么转载 2017-02-06 09:49:56 · 374 阅读 · 0 评论 -
异常类型和异常变量的生命周期
#include using namespace std; //传统异常处理 int copyfile(char *from, char * to) { if (from==NULL) { cout<<""<<endl; return 1; } if (to == NULL) { return 2; } if (*from == 'a') { return 3;原创 2016-09-28 08:56:27 · 867 阅读 · 0 评论 -
函数模板和普通函数在一起调用规则研究
/* 函数模板不允许自动类型转化 普通函数能够进行自动类型转换 */ /* 1.函数模板可以像普通函数一样被重载 2.c++编译器优先考虑普通函数 3. 如果函数模板可以产生一个更好的匹配,那么选择函数模板 4.可以通过空模板实参列表的语法限定编译器智能选择模板匹配 */ #include using namespace std; int Max(int a ,int原创 2016-09-26 20:59:44 · 1132 阅读 · 0 评论 -
函数模板深入研究
/* 1.编译器并不是把函数模板处理成能够处理任意类的函数 2.编译器从函数模板通过具体类型产生不同的函数 3.编译器会对函数模板进行两次编译 4.在声明的地方对模板代码本身进行编译;在调用的地方对参数替换后的代码进行编译。 */ #include using namespace std; template T Max( T a,T b) { cout<<"T Max(T a ,T b)"<原创 2016-09-27 07:27:02 · 261 阅读 · 0 评论 -
模板类派生普通类
#include using namespace std; template class A { public: A(T a) { this->a = a; } void printA() { cout<<"a:"<<a<<endl; } protected: private: T a; }; //模板派生是需要具体化模板类 c++编译器需要知道 父类的数据类型具体是什么原创 2016-09-27 08:14:30 · 990 阅读 · 0 评论 -
滥用友元产生的第一个问题
#include using namespace std; template class Complex { public: Complex(T a ,T b); void printCom(); Complex operator+(const Complex &c);//成员函数实现+运算符重载 protected: private: //声明位置无关 friend ostrea原创 2016-09-27 09:34:47 · 341 阅读 · 0 评论 -
滥用友元产生的第二个问题
所有的类模板函数写在类的外部,在不同的.h和.cpp中, 也就是类模板函数说明和类模板实现分开 //类模板函数 构造函数 普通成员函数 友元函数 用友元函数重载>; 用友元函数重载非> //要包含.cpp complex.h #pragma once #include using namespace std; template class Complex { pub原创 2016-09-27 09:59:19 · 311 阅读 · 0 评论 -
类模板中的static关键字
Ø 从类模板实例化的每个模板类有自己的类模板数据成员,该模板类的所有对象共享一个static数据成员 Ø 和非模板类的static数据成员一样,模板类的static数据成员也应该在文件范围定义和初始化 Ø 每个模板类有自己的类模板的static数据成员副本 #include using namespace std; template class AA { public原创 2016-09-27 10:34:48 · 522 阅读 · 0 评论 -
C++虚函数表介绍
转载:http://bbs.itcast.cn/forum.php?mod=viewthread&tid=86373&extra=page%3D1%26filter%3Dtypeid%26typeid%3D252?cazn 多态 多态是指使用相同的函数名来访问函数不同的实现方法,可以简单概括为“一种接口,多种方法”。 C++支持编译时多态(也叫静态多态)和运行时多态(也叫动态多态),转载 2016-10-23 19:25:25 · 333 阅读 · 0 评论 -
类模板在项目开发中的应用
模板是C++类型参数化的多态工具。C++提供函数模板和类模板。 模板定义以模板说明开始。类属参数必须在模板定义中至少出现一次。 同一个类属参数可以用于多个模板。 类属参数可用于函数的参数类型、返回类型和声明函数中的变量。 模板由编译器根据实际数据类型实例化,生成可执行代码。实例化的函数。 模板称为模板函数;实例化的类模板称为模板类。 函数模板可以用多种方式重载。 类模板可以在类层次原创 2016-09-27 18:20:15 · 464 阅读 · 0 评论 -
当函数模板遇到普通函数
函数模板和普通函数区别结论: 函数模板不允许自动类型转化 普通函数能够进行自动类型转换 函数模板和普通函数在一起,调用规则: 1 函数模板可以像普通函数一样被重载 2 C++编译器优先考虑普通函数 3 如果函数模板可以产生一个更好的匹配,那么选择模板 4 可以通过空模板实参列表的语法限定编译器只通过模板匹配 #include using namespace std; temp原创 2016-09-09 16:42:44 · 398 阅读 · 0 评论 -
自定义异常类
#include using namespace std; class MyArray { public: MyArray(int size); ~MyArray(); public: int & operator[](int index); int getLen(); /* 1) 抛出异常eNegative 2)index = 0 抛出异常 eZero 3)index原创 2016-09-28 09:43:47 · 397 阅读 · 0 评论 -
迭代器基本原理
迭代器基本原理: 迭代器是一个“可遍历STL容器内全部或部分元素”的对象。 迭代器指出容器中的一个特定位置。 迭代器就如同一个指针。 迭代器提供对一个容器中的对象的访问方法,并且可以定义了容器中对象的范围。 迭代器的类别: 输入迭代器:也有叫法称之为“只读迭代器”,它从容器中读取元素,只能一次读入一个元素向前移动,只支持一遍算法,同一个输入迭代器不能两遍遍历一个序列。转载 2016-09-30 08:41:27 · 2236 阅读 · 0 评论 -
函数对象
1.函数对象: 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式 使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待。 这是通过重载类的operator()来实现的。 “在标准库中,函数对象被广泛地使用以获得弹性”,标准库中的很多算法都可以使用函数对原创 2016-09-30 09:41:20 · 424 阅读 · 0 评论 -
map容器的四种插入元素方法
//插入元素 //四种插入方法比较 void display() { map m; pair::iterator,bool> pair1 ,pair2,pair3; //1.方法 pair1 = m.insert(pair(1,"teacher01")); pair2 = m.insert(pair(2,"teacher02")); pair3 = m.insert(pair(2原创 2016-09-30 10:13:18 · 18563 阅读 · 2 评论 -
STL实用技术基本概念
STL基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采 用了模板类和模板转载 2016-09-30 08:11:32 · 791 阅读 · 0 评论 -
容器共性机制研究
理论提高: 所有容器提供的都是值(value)语意,而非引用(reference)语意。容器执行插入元素的操作时,内部实施拷贝动作。 所以STL容器内存储的元素必须能够被拷贝(必须提供拷贝构造函数)。 除了queue与stack外,每个容器都提供可返回迭代器的函数,运用返回的迭代器就可以访问元素。 通常STL不会丢出异常。要求使用者确保传入正确的参数。 每个容器都提供了一个默认转载 2016-09-30 08:22:15 · 350 阅读 · 0 评论 -
二元函数对象和二元谓词
#include #include #include #include #include #include #include #include using namespace std; template class SumAdd { public: SumAdd() { } T operator()(cons原创 2016-09-30 11:04:20 · 665 阅读 · 0 评论 -
预定义函数对象
#include #include #include #include #include #include #include #include using namespace std; //plus 预定义函数对象 能实现不能类型数据的+运算 // 实现了算法和数据类型的分离 ===》通过函数对象技术实现的 /* tem原创 2016-09-30 12:05:13 · 691 阅读 · 0 评论
分享