c++ 学习笔记
见习小生
菊厂工程师
展开
-
二叉树遍历之中序遍历(源代码)
二叉树的中序遍历要点: 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 实例: 如图:中序遍历结果:DBEAFC 中序遍历的时间复杂度为:O(n)。 如果一棵二叉排序树的节点值是数值,中序遍历的结果为升序排列的数组。可以利用该性质检测一棵树是否为二叉排序数。 已知前序遍历和后序遍历,不能确定唯一的中序遍历 投影法: 计算中序遍历拥有比较简单直观的投影法,如图 3.原创 2016-05-18 11:22:27 · 13815 阅读 · 2 评论 -
c++ 进阶 泛型编程
1 . 泛型算法概述每个泛型算法的实现都独立于单独的容器类型 因为已经消除了算法的类型依赖性 所以单个的模板实例可以操作在各种容器以及内置数组类型上 考虑 find()算法 因为它独立于被适用的容器 所以它只要求下列一般性的步骤 这里假设资料集合未经排序1 顺次检查每个元素2 如果当前元素等于要被查找的值 那么返回该元素在集合中的位置3 否则 检查下一个元素 重复步骤 2 直到找到一个元素原创 2017-01-13 11:28:06 · 354 阅读 · 1 评论 -
c++ 内存管理基础篇 综合介绍
C++内存管理。程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。1、内存分配方式内存分配方式有三种:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2)在栈上创建。在执行转载 2017-01-07 10:48:44 · 347 阅读 · 0 评论 -
c++ map基础教程
Map是c++的一个标准容器,提供了一对一映射关系。参考python字典,半线性。 1、map最基本的构造函数; “` map map<int ,string> maplive; 1.maplive.insert(pair<int,string>(102,"aclive")); 2.maplive.insert(map<int,string>::value_type(原创 2017-01-05 11:37:37 · 1173 阅读 · 0 评论 -
c++ 队列(Queue)基础教程
queue是容器配接器C的一个示例,容器配接器C将一些基础容器转换成类C的容器。容器配接器queue、stack、priority_queue——与标准模板库的其他处理是截然不同的。他们的方法和定义要调用基础容器类的方法。 queue的基础类可以为list,list类中有size,empty,push_back,pop_front,front,back方法。deque类也可以作为基础类,而且原创 2017-01-03 17:29:46 · 2178 阅读 · 0 评论 -
C++ list最详细教程1 (包含程序源码)
/* list test demo time:2017.1.2在任何位置插入删除都是常数时间,不支持随机存取。除了具有所有顺序容器都有的成员函数以外,还支持8个成员函数:push_front: 在前面插入pop_front: 删除前面的元素sort: 排序( list 不支持STL 的算法sort)remove: 删除和指定值相等的所有元素unique: 删除所有和前一个元素相同的元原创 2017-01-02 09:54:02 · 1030 阅读 · 0 评论 -
C++ vector 最详细教程2 (包含程序源码)
3.vector容量相关函数含义及操作/size 函数 size_type size() const;max_size0 //函数返回vector的存储元素的个数,而不是其实际的容量void testSize(){ std::vector<int> myints; std::cout << "0. size: " << myints.size() << '\n'; fo原创 2017-01-01 21:49:39 · 956 阅读 · 0 评论 -
C++容器 vector 最详细教程1 (包含程序源码)
vector教程第一篇1.右值介绍/* vector C++ 11 有五个构造函数 默认构造函数 填充构造函数 范围构造函数 复制构造函数 移动构造函数 右值引用:&& 所引用的临时对象可以在该对象被初始化之后做修改 */右值测试:bool is_r_value(int &&){ return true;}bool is_r_value(const int &){原创 2017-01-01 20:54:30 · 501 阅读 · 0 评论 -
explicit
explicit作用:在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。explicit使用注意事项:* explicit 关键字只能用于类内部的构造函数声明上。* explicit 关键字作用于单个参数的构造函数。* 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的原创 2016-09-15 17:43:21 · 213 阅读 · 0 评论 -
c++ const
auto和decltype的用法总结 一, auto1, auto的作用 一般来说, 在把一个表达式或者函数的返回值赋给一个对象的时候, 我们必须要知道这个表达式的返回类型, 但是有的时候我们很难或者无法知道这个表达式或者函数的返回类型. 这个时候, 我们就可以使用auto关键字来让编译器帮助我们分析表达式或者函数所属的类型. 比如: 1 2 auto item = val1 +转载 2016-07-27 16:46:20 · 243 阅读 · 0 评论 -
c++ 模板
C++模板模板是 C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。模板是一种对类型进行参数化的工具;通常有两种形式: 函数模板和类模板;函数模板针对仅参数类型不同的函数;类模板针对仅数据成员和成员函数类型不同的类。使用模板的目的就是能够让程序员编写与类型无关的代码。 比如编写了一个交换两个整型转载 2016-07-26 20:49:50 · 305 阅读 · 0 评论 -
c++多态
原文出处:http://www.royaloo.com/articles/articles_2003/PolymorphismInCpp_content.htm摘要本文描述了C++中的各种多态性。重点阐述了面向对象的动态多态和基于模板的静态多态,并初步探讨了两种技术的结合使用。 关键词多态 继承 虚函数 模板 宏 函数重载 泛型编程 泛型模式 导言多态(polymorphism)一词转载 2016-07-26 09:32:00 · 407 阅读 · 0 评论 -
c语言小项目个人实现
=====项目一=====实训内容: 1、定义一个数组a[11],用以存放学生的成绩。 2、从键盘输入10个学生成绩 3、采用冒泡法,将学生成绩按照从高到低进行排序 4、再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组 5、将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列个人代码如下:#include<iostream>using namespace st原创 2016-05-12 22:36:54 · 731 阅读 · 1 评论 -
二叉树的先序遍历(源代码)
1.先序遍历要点: ⑴ 访问根结点; ⑵ 遍历左子树; ⑶ 遍历右子树。例子:如下图,先序遍历方式结果输出为:ABDECF 代码实现(递归版): void preOrder1(BinTree *root) //递归前序遍历 { if(root!=NULL) { cout<<root->data<<" "; preOrder原创 2016-05-17 23:13:24 · 9539 阅读 · 1 评论 -
C++ STL 算法库学习之adjacent_difference,count,partial_sum,accumulate,count_if详解
1.连续计算类adjacent_difference,count,partial_sum,accumulate,count_if 均是以线性复杂度accumulate#include <numeric>TYPE accumulate( iterator start, iterator end, TYPE val );TYPE accumulate( iterat...原创 2018-02-25 20:20:18 · 649 阅读 · 0 评论