C++基础
Vas_Sago
这个作者很懒,什么都没留下…
展开
-
'='重载_对象赋值
#include<iostream>#include<cmath>using namespace std;typedef long long LL;//const int INF = 0x3f3f3f3f;//最大值const double PI=acos(-1);class Circl{private: double R;public: Circl(){};原创 2016-11-12 18:13:39 · 364 阅读 · 0 评论 -
按位运算&数学等价式
按位运算符C++共有6个<< , >> , ~ , & , | , ^移位运算符//左移运算符<<语法:value << shift //value是被操作的整数值,shift是要移动的位数//功能:左移一位相当于乘2,左移n位相当于乘以2的n次方//左移运算符在汇编语言中直接修改寄存器的内容,但是C++生成一个新值,如:int x=30;int y= x<<3;//x=x<<4;原创 2016-12-06 17:13:27 · 1735 阅读 · 0 评论 -
C++左值和右值
C++ 中的左值(Lvalues)和右值(Rvalues): C++ 中有两种类型的表达式: 左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。 右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。 变量是左值原创 2017-05-06 20:44:06 · 234 阅读 · 0 评论 -
通用类型转换(template)
#include<string>#include<sstream>template<class out_type,class val_type>out_type convert(const val_type &val){ stringstream ss; ss<<val; out_type out_val; ss>>out_val; return out原创 2017-05-01 12:03:00 · 584 阅读 · 0 评论 -
hash_map哈希映照容器的实现(template)
hash_map,顾名思义,就是利用hash_set存储结构的写map映照容器,普通的map用的是红黑树存储结构写的。元素的检索时间对比,hash_set近似为O(1),红黑树为O(logn)。Hash_map的空间开销要比map 的空间开销大,尤其是我用数组模拟指针写的hash_map。所以,如果有必要采取映射结构的时候,能用hash_map就别用map。需要注意的是,hash_map遍历出来的元转载 2017-05-01 11:12:14 · 365 阅读 · 0 评论 -
优先队列(二叉堆)模板(template)
template<class T,int MAX=100003>class BinaryHeap{ private: int Size; T * Tarr; public: BinaryHeap(); void insert(T x); T deleteMin(); ~BinaryHeap();};template<class T转载 2017-05-01 11:10:18 · 313 阅读 · 0 评论 -
哈希模板(template)
const int MAX=1000003;template <class T>class hash{private: int pos; int next[MAX]; int head[MAX]; T key[MAX];public: hash(); bool search(T x); void push(T x);};temp原创 2017-05-01 11:08:34 · 816 阅读 · 0 评论 -
类的组合
概念 类中的成员是另一个类的对象。 效果:可以在已有抽象的基础上实现更复杂的抽象。类组合的构造函数 不仅要负责对本类中的基本类型成员数据初始化,也要对对象成员初始化。//声明形式类名::类名(对象成员所需的形参,本类成员形参):对象1(参数),对象2(参数),......{//函数体其他语句}class Point { //Point类定义private: int x,原创 2017-01-03 11:22:17 · 501 阅读 · 0 评论 -
析构函数小结
1)完成对象被删除前的一些清理工作。 2)在对象的生存期结束的时刻系统自动调用它,然后再释放此对象所属的空间。 2)如果程序中未声明析构函数,编译器将自动产生一个默认的析构函数,其函数体为空。#include using namespace std;class Point {private: int x, y;public: Point(int xx,int yy); ~Po原创 2017-01-03 11:08:14 · 585 阅读 · 0 评论 -
构造函数小结
概念 构造函数是一种特殊的类成员函数,在创建类对象时候调用。有以下特性:1)构造函数名称和类名称一样;2)不声明返回类型;3)可以重载,但是每个函数的参数列表要不同; 主要用途:初始化类对象的成员 析构函数:当对象被删除时调用的函数,每个类只有一个析构函数。构造函数没有返回类型,也没有参数,名称和类相同而且前面加上 ~ 。 //如果构造函数使用了new 那么必须提供实用dele原创 2016-11-24 20:00:46 · 305 阅读 · 0 评论 -
继承与派生
(一) 基本概念保持已有类的特性而构造新类的过程称为继承 在已有类的基础上新增自己的特性而产生新类的过程称为派生。继承与派生的目的继承的目的:实现设计与代码的重用。派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,对原有程序进行改造。基本语法//单继承class 派生类名:继承方式 基类名{ }//多继承class 派生类名:继承方式1 基类名1,继承方式2 基类原创 2016-11-27 11:14:40 · 363 阅读 · 0 评论 -
重载_,“+, -, --, ++”运算符
#includeusing namespace std;class Complex{private: int fro; int fai;public: Complex (){}; Complex(int a,int b):fro(a),fai(b){ }; Complex operator+ (const Complex& x) c原创 2016-11-26 19:28:23 · 1655 阅读 · 2 评论 -
重载_流运算符和函数运算符()
重载流运算符来输入输出用户自己定义的类。 流运算符函数是全局函数,不能作为类的成员来定义。 声明:// 其中参数为流对象的引用,目标对象的引用。对于输出流,目标对象还要是常量。istream& operator>> (istream& in,Test & t1);ostream& operator<< (ostream& out,const Test & t2);// 使用时可以使用友元函原创 2016-11-25 15:45:49 · 1165 阅读 · 0 评论 -
C++输入输出
I/O流 在C++中,将数据从一个对象到另一个对象的流动抽象为“流”。流在使用前要被建立,使用后要被删除。 数据的输入与输出是通过I/O流来实现的,cin和cout是预定义的流类对象。 预定义的插入符和提取符 “<<”是预定义的插入符,作用在流类对象cout上便可以实现项标准输出设备输出。cout << 表达式 << ...标准输入是将提取符作用在流类对象cin上。cin >> 表达式 >>原创 2016-12-02 20:24:06 · 308 阅读 · 0 评论 -
位运算实现加减乘除
加法运算 原理: 两个数相加,可以拆分为两个数每一位分别相加,并且不进位的结果,再加上进位。简单举个例子,比如 14+7= 11+10 =21 11 就是不进位相加的结果,换句话就是两个数个位与个位相加,十位与十位相加,并且不进位(个位相加并且不进位为1,十位相加为1,所以为11)10就是进位 7+4>=10 所以要进位10再举个例子134+968 = 092+1010 = 1002+100原创 2017-06-08 21:15:36 · 1023 阅读 · 0 评论