
C++/C
已删除ddd
做一个简单,明亮,快乐的手艺人。
展开
-
模板类的简单使用
#include using std::cout;using std::cin;using std::endl;templateclass Point{protected:T x, y;public:Point(T x, T y){this -> x = x;this -> y = y;}virtual void show原创 2014-11-11 13:50:09 · 600 阅读 · 0 评论 -
Lists
Lists使用一个doubly linded list(双向链表)来管理元素,决定了list的内部结构和vector与deque迥然不同,所以先在几个主要方面与前述二者存在明显的区别。根据链表的性质,list不支持随机存取,意思是如果你想存取第i位置上的元素就必须顺着链表访问到i位置。任何位置上的插入删除操作都能在常数时间内完成,毕竟无需移动任何元素只通过内部的一些指针操作即可。安插和删除动作原创 2017-01-19 17:21:23 · 314 阅读 · 0 评论 -
Deques
deque同样是采用动态数组来管理元素,提供随机存取,并有着和vector几乎相同的接口。不同之处在于deque的动态数组头尾都开放,因此在头尾两端均能快速进行快速安插和删除。Deques VS Vectors不同点Deque两端都能进行快速安插和移除元素,均能在常数时间内完成。存取元素时,deque的内部结构会多一个间接过程,所以元素的存取和迭代器的动作会稍慢与vector。迭代器不需要再不原创 2017-01-19 15:54:42 · 810 阅读 · 0 评论 -
STL笔记介绍
STL组件介绍关于STL前世今生之类的介绍就不多说了,网上很多,没事就去看看,挺没趣的。我尽量表达的言简意赅,方便自己和能看到这篇文章的朋友理解,此文中大量引用,不要见怪。STL(Standard Template Library)是C++标准程序库的核心,若干组件共同合作构成了STL的基础。 其 最关键的组件是 1 容器, 2 迭代器 , 3 算法 除此之外还有 4 仿函数(functors)原创 2017-01-18 21:57:35 · 347 阅读 · 0 评论 -
Vectors(二 操作函数)
拷贝、构造和析构非变动性操作赋值元素存取迭代器相关函数安插、移除相关操作原创 2017-01-19 15:05:11 · 412 阅读 · 0 评论 -
Vectors(一:大小和容量)
从这篇文章开始,依次详解各个组件,自然是从容器开始说起。 vector将元素复制到内部的dynamic array中,元素之间总是存在某种顺序,所以vectors是一种有序群集(ordered collection)。vector支持随机存取,因此只要知道位置,你可以在常数时间内存取任何一个元素。vector的迭代器是随机存取迭代器,所以STL的任何算法都可以奏效。大小(Size)和容量(Ca原创 2017-01-19 10:03:54 · 1457 阅读 · 0 评论 -
Iterator Adapters(迭代器配接器)
C++标准程序库提供了数个预定义的特殊迭代器,即所谓的迭代器配接器(Iterator Adapters),赋予了迭代器更强大的能力。Reverse Iterators(逆向迭代器)逆向迭代器是一种配接器,重新定义递增运算和递减运算,使其行为正好倒置,这么一来,如果你使用这类迭代器,算法将以逆序次序来处理元素。所有标准容器都允许使用Reverse迭代器来遍历元素。例子#inc翻译 2017-01-07 12:53:45 · 379 阅读 · 0 评论 -
C++中的强制类型转换
关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。 3.1 st转载 2015-11-12 18:00:21 · 6765 阅读 · 0 评论 -
二叉树创建及遍历
声明:这篇文章是抄袭http://blog.youkuaiyun.com/sjf0115/article/details/8645991 请大家自己查看原博客#include<iostream>#include<stack>#include<queue>using namespace std;//二叉树结点数据结构typedef struct BiTNode{ char data;原创 2015-07-01 22:45:15 · 6977 阅读 · 0 评论 -
计算两个日期之间的天数
#include using namespace std;//IsLeap函数判断一个年份是否为闰年,方法如下:bool IsLeap(int year){ return (year % 4 ==0 || year % 400 ==0) && (year % 100 !=0);} //上面的StringToDate函数用于取出日期中的年月日并判断日期是否合法原创 2015-02-07 20:31:39 · 6947 阅读 · 0 评论 -
C++的时钟类
#include using namespace std;class Clock{private: int hour, minute, second;public: Clock(int hour = 0, int minute = 0, int second = 0); Clock & operator++(); Clock operator++(int); friend转载 2014-12-04 21:54:20 · 11587 阅读 · 0 评论 -
基于范围的for循环
C++11为我们引入了大量的C++的新特性,今天我们就来简单介绍一下C++11新增的循环方式,基于范围的for循环(range_based)。这种循环有效简化了常见的循环原创 2014-12-03 21:41:05 · 11180 阅读 · 0 评论 -
new delete使用
在C中我们学习了用malloc开辟一段内存,实现动态内存分配,而C++给我原创 2014-11-11 21:37:16 · 516 阅读 · 0 评论 -
运算符重载
1.运算符重载定义:C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一。运算符重载是通过创建运算符函数实现的,运算符函数定义了重载的运转载 2014-11-21 20:17:31 · 5361 阅读 · 0 评论 -
运算符重载(一)
使用运算符重载的原因:程序更加美观漂亮,逻辑原创 2014-11-21 16:46:44 · 6857 阅读 · 0 评论 -
如何初始化类的const成员
初始化类的其实也很简单。原创 2014-11-18 13:25:09 · 7017 阅读 · 0 评论 -
友元的简单使用
//测试友元的使用(1)C++编程中如果需要访问非本类的私有成员,那么就需要用到友元。否则私有成员是无法被外部直接访问的,而友元可以被定义为友元函数和友元类,即指定某函数或类直接访问私有类.(友元从某种程度上来说破坏了OOP的数据封装的原则,所以友元要慎用)友元的使用也非常简单。只需要在引入类中的其他类或函数前面加上关键字friend即可。例如class Test原创 2014-11-14 08:03:15 · 826 阅读 · 0 评论 -
引用的使用
引用变量C++新增了一种复合类型————引用变量。引用是已定义的变量的别名。原创 2014-11-14 13:22:03 · 7274 阅读 · 0 评论 -
层次遍历二叉树
著作权所有者:何海涛 《剑指Offer——名企面试官精讲典型编程题》代码题目23: 层次遍历二叉树 题目: 从上到下打印二叉树的每个结点,同一层的结点按照从左到右的顺序打印。#include <iostream>#include <exception>#include <queue>using namespace std;struct BinaryTreeNode{ int转载 2017-05-08 21:22:33 · 421 阅读 · 0 评论