c++string
string小结 开始 string类由头文件string支持 (头文件string.h和cstring支持对c-风格字符串进行操纵的c库字符串函数,但不支持string类) string类将string::nops定义为字符串最大长度,通常为unsigned int最大值 string与wstring: string是针对char而预先定义的特化版本,wstring是针对wchat_t而预先定义的特化版本 使用wstring可以让你使用宽字符集,例如Unicode或某些亚洲字符集‘ 所有字符串类型都采用相同接口,所以两者用法都一样。 C++字符串并不以’/0’结尾 注意对象名不会被看做是对象地址,比如string s(20, ‘x’); s不是指针,s+6没有意义,而&s[6]却是指针。 字符串各种操作函数 Name Feature swap() 交换两个字符串的内容 =, assign() 赋以新值 +=, append(), push_back() 在尾部添加字符 insert() 插入字符 erase() 删除字符...
emacs官方文档阅读笔记
基本命令行 翻页浏览命令C-v 向前移动一屏M-v 向后移动一屏C-l 重绘屏幕,并将光标所在行置于屏幕的中央 光标移动命令C-f 向右移动一个字符C-b 向左移动一个字符 M-f 向右移动一个词【对中文是移动到下一个标点符号】M-b 向左移动一个词【对中文是移动到上一个标点符号】 C-n 移动到下一行C-p 移动到上一行 C-a 移动到行首C-e 移动到行尾 M-a 移动到句首M-e 移动到句尾 M->文章末尾 M-<文章首段 文本编辑命令< DEL > 删除光标前的一个字符【这里的DEL指键盘上的Backspace键】C-d 删除光标后的一个字符 M-< DEL > 移除光标前的一个词M-d 移除光标后的一个词 C-k 移除从光标到“行尾”间的字符【移除其实相当于其他编辑器里的剪切】M-k 移除从光标到“句尾”间的字符 C-y 在光标所在处插入最后移除的文字【这个召回命令其实相当于其他编辑器...
c++小总结2
虚函数与继承,转换函数 虚函数与继承12345678class shape{ public: virtual void draw() const = 0; //pure virtual,一定要定义 virtual void error(const std::string& msg); //impure virtual,希望重新定义,而且已有默认定义 int objectID() const; //non-virtual,不希望重新定义} 转换函数情况11234567891011121314151617class Fraction{ public: Fraction(int num, int den = 1) : m_numerator(num), m_denominator(den) { } //(1) operator double() const //转换函数 { return (double)(m_numerator / m_denomina...
c++小总结
构造函数不能共存例子、构造函数放在private、const在函数前与后、相同class的各个objects互为友元、设计一个类注意事项、操作符重载、new与delete、static、继承,复合,委托 1. 构造函数不能共存例子1234567(1)complex (double r = 0, double i = 0) : re(r), im(i){ }(2)complex() : re(0), im(0) { } 当使用complex c1;或complex c2();时,两种创建办法都没有参数,编译器可以调用(1),对于(2),虽然函数有参数,但是有默认值,也可以调用,所以会冲突,不能共存。 2. 构造函数放在private一般我们不把构造函数放在private里面,因为这样不能被外界调用。其实也有特殊情况,下面列举一种,Meyers Singleton设计模式 123456789101112131415161718class A{public: static A& getInstance(); setup()...
过年是不可能过年的
如今新年越来月没有年味了,对于我来说,给电脑换个壁纸等于过年 </div> 壁纸,当然得骚红,毕竟 男人可以不帅,但是不能不骚 今年春晚有4k源,但是在youtube上面嗨,估计也是给外国佬当做催眠剂把,毕竟 春晚一分钟,稳睡一晚上 无聊来谢谢随笔,其实也不算随笔,就是在xjb写 其实吧,是为了测试下悠闲谈板块而已 放假后用hexo和github搭建了个博客,这可能是好事,也可能是坏处,毕竟有很多东西都有两面性 然后,就没有然后了,现在是除夕下午,衣着简陋,无心过年,唯有农药 (说,农药给了你多少钱)
STL之set和multiset
set和multiset容器的操作函数和一道题:HDU 4989 Summary 一、开始 使用set或multiset之前,必须加入头文件 set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就像一个集合一样。所有的操作的都是严格在logn时间之内完成,效率非常高。 set 和multiset容器的内部结构通常由平衡二叉树(balancedbinary tree)来实现。当元素放入容器中时,会按照一定的排序法则自动排序,默认是按照less<>排序规则来排序。两者不同之处在于,multisets允许元素重复,而set不允许重复。 平衡二叉树: </div> 这种自动排序的特性加速了元素查找的过程,但是也带来了一个问题:不可以直接修改set或multiset容器中的元素值,因为这样做就可能违反了元素自动排序的规则。如果你希望修改一个元素的值,必须先删除原有的元素,再插入新的元素。 sets和multisets具有以下特点: 不提供直接用来存取元素的任何操作元素 通过迭代器进行元素的存取。二、set和mul...
STL之vector
vector的声明、向量操作、访问方式、赋值操作、安插,移除相关操作、应用实例。一道习题(第k个约数) 一、 开始: 要使用vector必须包含头文件< vector > vector可以看成是动态一维数组 vector可以存在重复元素(set不能存在) vector迭代器是随机存取迭代器,所以对任何一个STL算法都奏效 在末端附加或删除元素时,vector的性能相当好。但是如果在前端或在中部安插或删除元素,性能就不怎么样了。因为操作点之后的每一个元素都必须移到另一个位置,而每一次移动都得调用赋值操作符二、 vector的声明:12345678910vector<type> a;/*type可以是int,double等等.此时a.size()为0,但是因为是动态的,所以大小会可能改变*/int n; cin >> n;vector<type> a(n); //动态分配vector<int> a(100, 0);//声明一个存放了100个0的整数vector,其大小没有被固定为100,还可以加数据vector<typ...
一步一步写出c++带指针类实例(标准库string部分)
共16步本篇文章注重与complex篇的区别,可能不那么详细 流程: 写出主体(行1,2,11) 考虑private里面要放的数据,字符串,当然是放很多字符,一种想法是里面放一个数组,但是这种数组可能不是很好,因为数组你得指明多大,太大或太小都不好。所以我们选择另一种做法,在里面放一个指针,将来要分配多大内存,就动态去分配,用new的方式。一个指针多大,在传统的32位电脑中是4个字节,所以无论以后字符串里面内容是什么,字符串这个对象本身就是4个字节。(行9,10) 然后到了准备函数的环节,首先当然是构造函数,要使外界创建string,一定要调用构造函数,而且要放到public(当然也有放在private里面的,只是很少)。 存进来以后当然不可能要改变里面的东西,我们只是拿来当初值而已,所以加const,并且给默认值为0。(行4) class里面有指针,所以要去关注三个重要特殊的函数。 第一个是拷贝构造函数。既然是拷贝构造,那么就是相当于它自己,则参数里面类型用String。再考虑下引用和const的问题,引用必须的。(行5)我们传进来只是复制个蓝本,没有考虑要去改变,所以加上co...
一步一步写出c++不带指针类实例(标准库complex部分)
总共有19步 流程: 首先先养成防卫式习惯,在头文件中加入下面三行,防止重复包含(行2,3,19) 然后写出主体(行4,5,18) 考虑下这个复数需要什么数据,当然这个数据应该放在私有部分(private)。 复数有实部虚部,可得出private变量的定义(行15,16) 接下来考虑需要什么函数来实现,这些函数当然需要操作在复数身上,然后 函数是对外发表的,所以放在public里面(行7,行8) 首先任何一个class都有构造函数,然后构造函数的语法是什么? 构造函数名称与class名称相同,没有返回类型。接着,一个构造函数应该接收什么参数? 在这个例子中,有实部虚部,我们就应该有实部虚部的参数,然后我们就考量要不要默认值。 我们还要考虑这个函数的传递是按值传递还是按引用传递? 这个函数中传值或者传引用区别不大,所以随便选择一个 还得想到构造函数有个很特别的语法—初始列,一般最好运用初始列 然后考虑构造函数还需要干什么,这个例子已经不需要什么操作,在别的地方可能要在构造函数中分配一些内存,开个窗口,或者开个文件等等(行9,10) 接下来考虑这个class要实现什么功能,在这个例子...
一道优先队列习题
hdu1873 看病要排队 优先队列 一、hdu1873 看病要排队 优先队列题目描述看病要排队这个是地球人都知道的常识。不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻重,所以不能根据简单的先来先服务的原则。所以医院对每种病情规定了10种不同的优先级。级别为10的优先权最高,级别为1的优先权最低。医生在看病时,则会在他的队伍里面选择一个优先权最高的人进行诊治。如果遇到两个优先权一样的病人的话,则选择最早来排队的病人。现在就请你帮助医院模拟这个看病过程。输入输入数据包含多组测试,请处理到文件结束。每组数据第一行有一个正整数N(0