
【C++学习笔记】
文章平均质量分 52
赵一弘
这个作者很懒,什么都没留下…
展开
-
C++学习笔记(二十四)虚继承
创建来一个goods类来处理价格的问题但是子类构造时 goods被构造3次 调用goods中的声明函数会出现错误,因为在虽然调用函数如果子类中没有就去父类中找,但是中间几个父类都继承了goods,都拥有相同的函数,不知道调用那个类中的函数. 所以 为了 让goods只保留一份 所有继承goods的地方都采用虚继承 虚继承的特性: 1 虚基类的成员只保留一份2原创 2013-04-14 23:31:32 · 566 阅读 · 0 评论 -
STL学习笔记(九) 序列式容器 vector
vector 的个性:vector 除了可以使用标准容器共性 和序列式容器共性外 还可以使用如下函数:当前容量 .capacity(),用于预先分配数组空间,以免多次重新分配空间和复制 // 共性中的.size()表示元素个数约定容量 .reserve(n)(1)下标 .operator[ ]( i ) 不检查越界 (2) .at( i ) 会先检查越界,越界抛原创 2013-05-21 16:51:58 · 797 阅读 · 0 评论 -
STL学习笔记(十) 序列式容器 deque
deque的个性:deque是由多个动态数组组成的数组 deque 除了可以使用标准容器共性 和序列式容器共性外 还可以使用如下函数下标: operator[ ](i) 不检查越界 .at(i)检查越界 增删: .push_front(element) .pop_front() 支持前面插入和删除数据 特点是支持在前面插入删除 (deque前后都可以插入删除原创 2013-05-21 16:58:07 · 588 阅读 · 0 评论 -
STL学习笔记(十三) 关联式容器 map 与 multimap
1 map的个性:除了支持标准容器共性和关联式容器共性外,还有以下特性:不允许key 重复元素是key,value对 所以插入的应该是pair支持以key为下标[ ] 访问对应的value引用。如果key不存在,就新增一个key, value用零初始化要注意如果value是自定义类型,一定要有个无参构造函数才能零初始化key可以是任意类型,但key必须支持小于运算符,原创 2013-05-21 18:32:28 · 706 阅读 · 0 评论 -
数据结构学习笔记(二) 堆栈及其基本操作
1 数组栈写法#include #include using namespace std;typedef string T;class Stack{ T a[5];//如果是固定的直接写个数组 int cur;public: Stack():cur(0){} //对象没有占用其他资源如打开文件 动态分配内存等 所以不需要析构 void push(const T&)原创 2013-05-07 23:55:55 · 526 阅读 · 0 评论 -
数据结构学习笔记(三) 队列及其基本操作
1 数组队列#include using namespace std;const int MAX = 5;class Queue{ int a[MAX]; int b;// 开始位置 int n; //数量public: Queue():b(0),n(0){} Queue& push(const T& d) { if(n==MAX) throw "队列满";原创 2013-05-08 00:05:29 · 748 阅读 · 0 评论 -
STL学习笔记(八) 序列式容器 共性
序列式容器单动态数组vector只适合在后面插入删除 , 其中有个特化vector 节省空间 8个元素一个字节 双端队列deque(多个动态数组)前后都适合插入删除 链表 list 插入删除都简单,但指定访问某个数据不方便 除了可以使用标准容器共性函数外,序列式容器还可以使用以下函数:1 构造函数,指定元素个数和初始值(初始值默认为零初始化)vecto原创 2013-05-21 16:44:35 · 745 阅读 · 0 评论 -
STL学习笔记(十一) 序列式容器 list
list个性: list 是个双向链表list 除了可以使用标准容器共性 和序列式容器共性外 还可以使用如下函数 增删 .push_front(element) .pop_front() (支持前后增加删除 insert ) 删除等于element的所有元素 .remove(element) 不支持下标 [ ] 除重: .unique( ) 去除原创 2013-05-21 17:17:34 · 566 阅读 · 0 评论 -
undefined reference to `std::ios_base::Init::Init() 错误
zhao@ubuntu:~/date_struct/day01$ gcc 09tree.cpp/tmp/ccRdJ54y.o: In function `__static_initialization_and_destruction_0(int, int)':09tree.cpp:(.text+0x27): undefined reference to `std::ios_base::Init原创 2013-05-08 20:44:35 · 1148 阅读 · 0 评论 -
STL学习笔记(十八) count find count_if find_if
iterator find(pos_beg,pos_end,data) //找到相同的 iterator find_if(pos_beg,pos_end,cond) //找到符合条件的 count(pos_beg,pos_end,data) //统计 count_if(pos_beg,pos_end,data,cond) //符合条件的才统计#include #inclu原创 2013-05-23 09:16:57 · 705 阅读 · 0 评论 -
STL学习笔记(八) 标准容器(类模板)共性
标准容器包括: vector deque list set map multiset multimap这篇里面讲的函数 它们都可以用1 构造函数:拥有 无参构造 拷贝构造 区间构造(两个迭代器表示的两个位置,半开半闭)析构2 拥有内部类型 - 迭代器,表示位置(封装了一个指针,使用的方法和指针差不多)(1) 正向迭代器 iterator,const_iterator原创 2013-05-21 16:18:33 · 865 阅读 · 0 评论 -
STL学习笔记(七) sort 函数
学习要点:1 sort函数 和其它函数,包括 STL容器等 表示区间都是用的半开半闭,最后一个是越界的.默认是从小大到大排列 2 排序的对象一定要支持小于符号,不支持就自己写一个operatro#include #include #include using namespace std;class Person { string name; int原创 2013-05-21 16:12:35 · 542 阅读 · 0 评论 -
C++学习笔记(二十五)组合
实际上多重继承及虚继承用的比较少 如果有需要 可以写成组合的形式内部类按声明顺序构造#include using namespace std;class Goods{ double price;public: Goods(double p=123.4):price(p){cout << "Goods("<< p << ")" <<endl;} ~Goods(){cou原创 2013-04-14 23:35:42 · 471 阅读 · 0 评论 -
C++学习笔记(二十六)虚函数 多态 dynamic_cast
学习要点:1 虚函数 根据对象类型来调用函数 而不是根据指针类型2 子类中的与虚函数同名函数的都是虚函数2013-5-5补充:这个说法有点不准确:(1) 如果必须参数列表和返回值函数名都相同 才能认为是对虚函数的重写,仍然是虚函数(2)函数后面有const 和 无const,可以视为两种不同函数 ,这个必须和基类中一致才能视为虚函数在这些不一致,或者说重写虚函数不成功的原创 2013-04-14 23:47:44 · 778 阅读 · 0 评论 -
C++学习笔记(二十八) 一个多态的例子
这个例子讲述了为什么需要多态在PC的这个类中,只接收usb类型的指针,如果使用多态,用子类指针接收父类地址,可以很方便地使用.#include using namespace std; class Usb{public: virtual void plugin(){} virtual void work(){} virtual void stop(){}};原创 2013-04-14 23:57:05 · 539 阅读 · 0 评论 -
STL学习笔记(五) 返回值是抽象类型的函数模版, 成员函数模版,利用函数模版来生成临时变量
学习要点:1 返回值是抽象类型的函数模版要在 使用 时写上返回值的类型2 成员函数也可以写程函数模版的形式3 可以利用函数模版不用写参数类型的特点 便利地生成临时变量#include #include using namespace std;template TO convertto(FROM v){ return TO(v);}template原创 2013-05-15 23:27:59 · 584 阅读 · 0 评论 -
C++学习笔记(三十八) fstream read write
1 fstream 可以进行读写操作2 fstream有两个指针,一个读 一个写 移动文件读指针 fstream.seekg(int pos,ios::begin); 相对位置默认是开头 可以不写 (p -put) 移动文件写指针 fstream.seekp(int pos,ios::begin); (g -get)2013-5-5本来按我的理解fstream是有两个指原创 2013-04-17 21:24:13 · 3721 阅读 · 1 评论 -
ACM输入输出方法
输入_第一类:输入不说明有多少个Input Block,以EOF为结束标志。 例1:Description:你的任务是计算a+bInput输入包含多行数据,每行有两个整数a和b,以空格分开。Output对于每对整数a,b,输出他们的和,每个和占一行。Sample Input1 510 20Sample Output630#incl转载 2013-05-19 08:02:16 · 1309 阅读 · 0 评论 -
QT SDK 1.2离线包 下载地址
由于经常找不到,以此保存拷贝到迅雷里面直接下载http://nds2.fds-forum.nokia.com/p/d/fds_forum/428e0ef9-1cb7-49cf-8ab5-0723f923e70d/Qt_SDK_Win_offline/Qt_SDK_Win_offline_v1_2_en.exe?fdptoken=1328923051_98b52b01a4ef4b原创 2013-05-07 09:42:43 · 689 阅读 · 0 评论 -
数据结构学习笔记(一) 链表及其基本操作
学习要点:1 零初始化 d = T() 如果T是基本数据类型 则表示0 如果T是自定义数据类型 则使用无参构造函数2 内部类型成员:定义一个类型,受到访问权限影响,一般外部不能访问3 内部成员指向动态内存时 需要重写析构 赋值 拷贝函数4 指针的引用 Node*&p 表示指针本身 可以用来改变指针的指向.一般在返回值和形参中出现这个02list.h原创 2013-04-29 19:40:53 · 834 阅读 · 1 评论 -
STL学习笔记(十二) 关联式容器共性
关联式容器共性: 1 关联式容器包括:set multiset map multimap 2 关联式容器共性:关联式容器l除了可以使用标准容器共性外 还拥有以下关联容器共性:实质都是红黑树,都自动根据key排序 set multiset map multimap 查找: .find(key) 返回一个迭代器,指向找到的第一个元素 失败返回.end原创 2013-05-21 18:17:59 · 686 阅读 · 0 评论 -
STL学习笔记(十五) 特殊容器 stack栈 , queue队列 , priority_queue优先队列
特殊容器包括stack栈 , queue队列 , priority_queue优先队列特殊容器的函数(1)共性 加入和删除 .push(element) .pop()只管删除,返回值是bool 都没有迭代器是否为空 .empty()(2)个性stack查看栈顶: .top() queue查看首位: .front() .back() ,pri原创 2013-05-23 08:52:37 · 549 阅读 · 0 评论 -
STL学习笔记(十四) 关联式容器 set multiset
set的个性:除了支持标准容器共性和关联式容器共性外,还有以下特性 * 元素就是key,没有value,key不允许重复 * 插入重复的key会被丢弃 默认使用小于来排序,自定义类型要定义小于号set用于管理一组不可重复的数据multiset 的个性除了支持标准容器共性和关联式容器共性外,还有以下特性 元素就是key 允许有重复的key管原创 2013-05-23 08:47:26 · 588 阅读 · 0 评论 -
金山笔试题-字符串排序 :" 写一个函数,实现对给定的字符串(字符串里面包括:英文字母,数字,符号)的处理"
写一个函数,实现对给定的字符串(字符串里面包括:英文字母,数字,符号)的处理。经过处理后的字符串其内容按字母,数字,符号的顺序存放。函数声明如下:void ParseString(char* pstr);要求:a. 不能改函数声明;b. 不改变字母数字等在字符串中原有的出现顺序;c. 直接使用pstr所值指缓冲区,不允许另开缓冲区。本来原创 2013-06-08 11:12:57 · 1347 阅读 · 1 评论 -
金山笔试题 "写一个函数,对给定整数的二进制表示进行描述"
4. 写一个函数,对给定整数的二进制表示进行描述如:给定整数131,其二进制表示为10000011,要求函数输出以下结果:1: 20: 51: 1表示从最低位开始,包含2个1,5个0,1个1。参考上一题,确定本函数的名字,入口出口及返回值,并实现本函数// js.cpp : 定义控制台应用程序的入口点。//#include "st原创 2013-06-08 11:14:53 · 949 阅读 · 0 评论 -
const对象和头文件三例外
c++ 中 const对象默认是的作用域是原创 2014-06-30 07:15:33 · 451 阅读 · 0 评论 -
c++ primer 第3章 思维导图 一边看书一边写
蓝色为c++11部分, 需要mmap文件可以给我留言原创 2014-09-04 10:11:00 · 834 阅读 · 0 评论 -
c++ primer 第2章 思维导图 (只含 c++11)
原创 2014-09-04 10:09:07 · 838 阅读 · 0 评论 -
C++ primer 第7章 类 思维导图
原创 2014-09-06 17:44:34 · 707 阅读 · 0 评论 -
C++ primer 第8章 IO库 思维导图
原创 2014-09-06 17:45:55 · 706 阅读 · 0 评论 -
C++ primer 第9章顺序容器 思维导图
原创 2014-09-06 17:46:44 · 886 阅读 · 1 评论 -
C++ primer 第六章 函数 思维导图
原创 2014-09-06 17:43:05 · 931 阅读 · 1 评论 -
C++编程思想读书笔记-8常量
1 头文件里的constconst默认为内部连接(internal linkage),仅在本文件内可见.为了使const能够被外部文件所引用,必须明确把它定义成externextern const int x = 1; 这样是是对常量做定义,而不是声明.声明是这样的 extern const int i; 表示在其它地方有定义一个常量i;2 const的空间分配问题原创 2013-06-06 09:52:55 · 816 阅读 · 1 评论 -
C++编程思想读书笔记-10 名字控制
1 可见范围控制连接只针对在连接/装载期间有地址的成员.全局变量,普通函数默认是外部连接(对其它文件可见,默认的extern属性)全局const变量除外,全局const变量默认是内部连接的(static属性)全局变量是静态存储的static对全局变量的作用是改为内部连接(对其它文件不可见), 对局部变量的作用是改变其存储类型(由动态存储改为静态存储)2 静态变量原创 2013-06-12 11:40:36 · 828 阅读 · 0 评论 -
STL学习笔记(十六) copy
复制一组数据1 复制 copy(pos_begin,pos_end,pos_dest_beg)2 带条件的复制 remove_copy_if(pos_begin,pos_end,pos_dest_beg, func) bool func(一个元素) 不满足条件的才复制3 从后往前复制复制 copy_backward(pos_beg,pos_end,pos_dest_end原创 2013-05-23 09:07:00 · 706 阅读 · 0 评论 -
STL学习笔记(十九) 特殊迭代器 将io流封装到迭代器中
迭代器: 输入迭代器 可读 *it的值,但不宜定能修改(设置)的值输出迭代器:可以设置*it的值,但不宜定能读取*it的值前向迭代器:可以读取 也可以设置*it 双向迭代器:支持-- 随机迭代起:几乎跟指针一样,支持++, +n,--, -n,支持比较大小,支持[下标] #include #include using namespace std原创 2013-05-23 09:22:04 · 565 阅读 · 0 评论 -
STL学习笔记(十六) for_each
for_each(pos_begin,pos_end,func ) func可以是一个函数 也可以是一个对象#include #include using namespace std;void add10(int& element){ element +=10;}void print(int element){ cout << element << '原创 2013-05-23 09:02:39 · 543 阅读 · 0 评论 -
一种128位高效文本加密算法的实现
1 效果图2 论文出处: (ICTES 2007)主要优点是快 我自己的测试加密吞吐率为67618Bytes/sec, Inter T6600 2.2GHZ下,远高于DES BlowFish缺点是 只支持 ASCII码32-126位,其中很明显的是回车加密后解密是乱码.基本原理:3 加密的类#pragma原创 2013-05-10 11:39:26 · 1401 阅读 · 0 评论 -
数据结构学习笔记(四) 二叉树及其基本操作
二叉树 : 方便查找 搜索速度快 经常需要搜索的数据放入二叉树#include using namespace std;typedef char T;#include #include class bst //二叉查找树{ struct Node { T data; Node* L; Node* R; //结构也可以写构造函数 Node(con原创 2013-05-11 09:18:43 · 606 阅读 · 0 评论 -
STL学习笔记(二)类模版的特化
学习要点:1 特化就是在写完模版后,再针对template注意特化的时候 不能设定默认值注意特化的时候 template类名旁边要写2 部分特化: 不是所有的参数都特化3 偏特化:类型不进行具体特化, 类模版接收的参数变成这个类型的变种部分特化:#include #include using namespace原创 2013-05-15 23:05:33 · 479 阅读 · 0 评论