C++语言学习
文章平均质量分 77
大疯疯
这个作者很懒,什么都没留下…
展开
-
C++指针,数组,引用基础
在看过《高质量程序设计指南C/C++》写了点笔记,加深理解原创 2016-03-16 16:29:55 · 379 阅读 · 0 评论 -
2018 好未来面试 C++ 知识点随笔
不定时更新。遇到好的问题记录 [toc]好未来一面 智能指针实现机制,弱指针和智能指针 c++11的特性有哪些 lamda和函数对象的区别 继承的理解 virtual继承和普通继承 virtual函数和普通函数的区别 覆盖和重载 QQ窗口设计 函数对象,函数,函数指针,之间的关系 两个栈实现一个队列 如何查找一个链表的中位数原创 2017-07-24 20:50:55 · 1083 阅读 · 0 评论 -
二叉堆,堆排序,STL优先队列的底层实现,剑指offer数据流中的中位数
一. 下图是从数组为0下标开始计算的。 下图是从数组为1下标开始计算的。引自《STL源码剖析》 p173原创 2017-08-14 11:06:21 · 624 阅读 · 0 评论 -
Effective C++ 知识点记录
导读 声明式,定义式,初始化 explict关键字,类的构造函数声明为explict,可以阻止它们被用来执行隐式类型转换。 除非有一个好理由允许构造函数被用于隐式类型转换,否则声明为explictpass-by-value意味着“调用拷贝构造函数“,以值传递原创 2017-07-07 17:02:58 · 620 阅读 · 0 评论 -
C++类内存分布 通过Visual studio 2013查看
C++类内存分布 转载自:http://www.cnblogs.com/jerry19880126/p/3616999.html 书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。 工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来:转载 2017-06-17 10:25:44 · 921 阅读 · 6 评论 -
C++组合和继承 组合中会涉及到默认构造函数和拷贝构造函数的问题
背景 上午师弟让我看一下他遇到的问题,让我意识到组合问题理解的还不是很清晰,顺便把他的代码记录下来。 在speed类中需要使用wheel的一个对象,需要对wheel初始化,在speed的构造函数里使用了赋值初始化,所以在wheel中需要定义一个默认构造函数。第一眼看下边的代码觉得没问题,编译老是链接器错误在speed构造函数里,之后改为对象指针解决。后边慢慢看了一原创 2017-05-09 19:38:46 · 719 阅读 · 0 评论 -
OpenMP并行程序设计——for循环并行化详解
在C/C++中使用OpenMP优化代码方便又简单,代码中需要并行处理的往往是一些比较耗时的for循环,所以重点介绍一下OpenMP中for循环的应用。个人感觉只要掌握了文中讲的这些就足够了,如果想要学习OpenMP可以到网上查查资料。 首先,如何使一段代码并行处理呢?omp中使用parallel制导指令标识代码中的并行段,形式为: #pragma omp paral转载 2016-12-07 16:39:21 · 810 阅读 · 0 评论 -
C++从后台输入多行长度未知的数字
当我们从输入端读取多行,但是长度未知的数字时: e.g:1 2 3 4 5 回车 6 7 8 9 希望vec[o]中存的是1 2 3 4 5 ,vec[1]存的是6 7 8 9。 1.基础: 对于输入控制的方法 方法一,可以分多行输入,每行不限个数,自动忽略输入中的空白符(空行、空格、制表符)。 std::vector v; for (double d原创 2016-09-11 17:10:37 · 2803 阅读 · 0 评论 -
数据结构之图---最小生成树Kruskal算法---C++实现
一、需求图Kruskal算法最小生成树 无向图中点与点之间,边上的数字表示权值。 二、实现Kruskal算法最小生成树 1.边的描述 定义边的对象时应有以下属性:这条边连接两端的点(nodeIndexA,nodeIndexB),边的权值,以及这条边是否被选中 2.图的描述 上述1,2与Prim算法一致见: 数据结构之图---最小生成树Prim算法---C++实现原创 2016-08-19 16:53:05 · 1345 阅读 · 0 评论 -
数据结构之图---最小生成树Prim算法---C++实现
一、需求图Prim算法最小生成树 无向图中点与点之间,边上的数字表示权值。 二、实现Prim算法最小生成树 1.边的描述 定义边的对象时应有以下属性:这条边连接两端的点(nodeIndexA,nodeIndexB),边的权值,以及这条边是否被选中 //Edge.h #ifndef _EDGE_H_ #define _EDGE_H_ class Edge{ public:原创 2016-08-18 21:37:09 · 2126 阅读 · 0 评论 -
数据结构之图---广度优先遍历---C++实现
一、目标图对其实现广度优先遍历 二、实现深度优先遍历 1、结点的描述 2、图的描述 以上描述见上篇: 数据结构之图--深度优先遍历---C++实现 :http://blog.csdn.net/wys2011101169/article/details/52238644 3、算法的调用 //在main.cpp中添加 //当我们调用的深度优先原创 2016-08-18 20:51:37 · 1153 阅读 · 0 评论 -
数据结构之图---深度优先遍历---C++实现
else if (nodeAInSetLabel == -1 && nodeBInSetLabel != 1) { nodeSets[nodeBInSetLabel].push_back(nodeAIndex); } else if (nodeAInSetLabel != -1 && nodeBInSetLabel == 1) { nodeSets[nodeAInSet原创 2016-08-18 10:46:57 · 1974 阅读 · 0 评论 -
c++静态数据成员和静态成员函数
类中的静态成员真是个让人爱恨交加的特性。我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。 静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同转载 2016-03-17 14:24:21 · 342 阅读 · 0 评论 -
#typedef和#define的区别
1. typedef typedef故名思意就是类型定义的意思,但是它并不是定义一个新的类型而是给已有的类型起一个别名,在这一点上与引用的含义类似,引用是变量或对象的别名,而typedef定义的是类型的别名。typedef的作用主要有两点: 1.1 简化复杂的类型声明 简化复杂的类型声明,或给已有类型起一含义明确的别名;如: typedef bool (*F转载 2016-03-16 18:14:34 · 421 阅读 · 0 评论 -
C++ 设计模式-单例-工厂
设计模式的六大原则 (1)几种设计原则的小结(6个原则的首字母组合单词(S.O.L.I.D,表示稳定) ①单一职责原则告诉我们实现类要职责单一; ②里氏替换原则告诉我们不要破坏继承体系;所有使用基类的地方必须能透明地使用子类替换,而程序的行为没有任何变化 ③依赖倒置原则告诉我们要面向接口编程; ④接口隔离原则告诉我们在设计原创 2017-09-12 15:08:57 · 710 阅读 · 0 评论