c++
文章平均质量分 59
小鱼Doris
以此博客记录学习的过程和学习总结呀~~
展开
-
extern详解
Extern的问题在于不知道这个关键词出现的时候到底是声明还是定义。谨记:声明可以多次,定义只能一次。函数的声明extern关键词是可有可无的,因为函数本身不加修饰的话就是extern的。但是引用的时候一样是需要声明的。而全局变量在外部使用声明时,extern关键词是必须的,如果变量无extern修饰且没有显式的初始化,同样成为变量的定义,因此此时必须加转载 2017-07-20 10:14:25 · 322 阅读 · 0 评论 -
空间复杂度和时间复杂度
空间复杂度程序所需的空间主要由以下部分组成: 1. 指令空间 指令空间指编译之后的程序指令所需的存储空间。 2. 数据空间 所有常量和变量值所需要的存储空间。 3. 环境栈空间 环境栈用来保存暂停的函数和方法恢复运行时所需的信息。包括:返回地址&正在调用的函数的所有局部变量的值以及形式参数的值(有些编译器仅对递归函数保存局部变量和形参)。时间复杂度用分析方法确定一个原创 2017-11-15 21:31:13 · 222 阅读 · 0 评论 -
判断一个单链表是否存在环
这是leetcode上面的一道简单题【141. Linked List Cycle】,大约半个月前刷到的,当时没想出来,然后看到的Solution,提到了hash表和快慢指针两种算法,觉得好复杂,然后放着没有去想了。恰好导师有新的idea让我试下,所以一放就放到现在,今天终于实现了。开熏。 这里记录两种方法:快慢指针法和利用STL里面的map或者set实现的方法(用STL的方法实际上和hash原创 2017-12-19 19:50:58 · 327 阅读 · 0 评论 -
STL的reserve和resize
以下的reserve和resize区别不限于vector,也适用于string等。 转载自:http://blog.csdn.net/colddie/article/details/8665456 reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用push_back()/insert()函数。 resize是改变转载 2017-11-23 11:04:01 · 328 阅读 · 0 评论 -
C++的string
string类型是c++编程中常用的一种数据类型,下面简要总结它的用法。连接两个string或者连接一个string一个char用+举例:#include <iostream>#include <string>int main(){ std::string s1 = "Hello"; std::string s2 = "world"; std::cout << s1 +原创 2017-11-20 21:45:14 · 307 阅读 · 0 评论 -
操作符new
说明new用来进行动态存储分配或运行时存储分配,它的值是一个指针int *y;//先声明y = new int;*y = 10;或者写成int *y = new int(10);举例直接贴上几个例子: 1. int *a = new int;//用new来开辟一个存放整数的存储空间,返回指向改存储空间的地址,赋值给a,整型数值大小不定 2. int *a = new int(100);//同原创 2017-11-13 12:07:42 · 313 阅读 · 0 评论 -
Leetcode [290Word Pattern]涉及到的小知识--string
题目是: Given a pattern and a string str, find if str follows the same pattern. Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in s原创 2018-01-11 18:15:59 · 230 阅读 · 0 评论 -
c++的整数表达
由于老是记不太住short,int,long,long long所表示的数的范围,所以在这里记录一下。int的表示与编译器有关,一般的编译器用四个字节来表示。4个字节有32位,其中第一位用来表示“正负”,其余31位用来表示数值,那么int范围是(-2^31,2^31-1)【为什么负数能多表示一个,参考http://blog.sina.com.cn/s/blog_9e67285801010vms.ht原创 2017-12-29 16:32:33 · 2673 阅读 · 0 评论 -
数组名 和 &数组名
程序 double str1[10]; cout << sizeof(str1) << endl; //此时求数组所占内存大小 80 cout << sizeof(&str1) << endl;//求数组首地址指针所占内存大小 win32下4 std::cout << str1 <&l...原创 2018-03-23 21:27:32 · 379 阅读 · 0 评论 -
c++中char *和string之间的转换方法
由于这两天恰好用到char *和string之间的转换,在网上搜索各种方法,在这里记录一下,以便日后翻阅. 参考: https://www.cnblogs.com/devilmaycry812839668/p/6353807.html 和https://zhidao.baidu.com/question/104592558.htmlchar * 或者char[]转换成stri...原创 2018-03-21 16:07:55 · 1351 阅读 · 0 评论 -
STL
参考《STL源码剖析》array 数组,array<int,3> a{1,2,3} ,还不如直接写int a[3]呢。不说了。vector 和array很相似,唯一差别在于空间的灵活性。array是静态空间,想要改变数组大小很麻烦(重新申请一个大的空间,复制数据过去,释放原来空间)。vector是动态空间,比如说每次新增元素时,如果超过当时的容量,则容量会扩充至两倍(如果两倍...原创 2018-03-28 22:28:29 · 146 阅读 · 0 评论 -
C++sort 函数小总结
1. 概念 昨天踩坑了,今天来总结一下sort函数的用法,sort函数是C++的STL里面的一个强大的算法,是用来处理容器的非成员函数。它接受两个RandomAccessIterators(随机存取迭代器),然后将区间内的所有元素以渐增方式由小到大排序。另外一个版本则可以指定排序标准。2. 适用模板类概览【此部分参考《STL源码剖析》,摘录,有略微表达不同】 a) STL的所...原创 2018-04-30 11:58:31 · 2664 阅读 · 0 评论 -
虚继承、虚函数 、sizeof
参考https://www.cnblogs.com/yanqi0124/p/3829964.html一、含有虚函数的类的sizeof 假设一个类含有虚函数,那么它就有个隐藏的虚表指针。 比如class Base { int a; virtual void f() {} virtual void g() {} virtual void h() {}...原创 2018-07-12 21:44:43 · 1493 阅读 · 1 评论 -
C++简答小记录
1. C语言和C++的特点和关系 答: C语言是面向过程的编程,c++是面向对象的编程; C语言强调算法过程,而C++强调数据; C++是面向对象的,能够做到对数据和信息的隐藏,还能支持模板类泛型编程。2. 内联函数 ◇内联函数和常规函数的区别不在于编写方式,而在于编译器如何将它们组合到程序中; ◇常规函数的调用可以使程序跳到另一个地址(函数的地址)...原创 2018-07-22 20:31:27 · 229 阅读 · 0 评论 -
合并有序链式线性表
Leetcode的easy题之21Merge Two Sorted Lists要求合并两个已经排好序的链式线性表。其实就是简单的链表操作。 但是由于自己各种操作不熟悉,这道题捯饬了一天。首先就是这个控制台输入两组数,分别建立两个线性表这里卡了很久。另一个点就是把链表接起来,这里操作也不是很熟悉。以下就分这两个点来总结记录一下。控制台输入建立链式线性表要求:两组数以回车符'\n' 作为分隔标记,原创 2017-11-18 18:24:39 · 993 阅读 · 0 评论 -
C++栈
Leetcode 的easy题之20.Valid Parentheses做的是括号的匹配。就是一个简答的栈的应用问题。因此在这里简单记录一下c++模板类里面的stack用法。stack头文件#include<stack>构造函数 std::stack s;常用函数 top:获得栈顶元素 empty :判断是否非空 size: 获得栈的元素个数 push:压元素进栈 pop:弹出元素,原创 2017-11-18 14:03:55 · 283 阅读 · 0 评论 -
友元函数的概念
对于一个类的私有成员,只有类的成员函数才能直接访问。外部的类或者函数想要访问就必须给予它权利,也就是设置成该类的友元(friend)。#include<iostream>#include<cstdlib>using namespace std;class currency{ //建立友元 friend ostream& operator<<(ostream& out, con原创 2017-11-13 19:27:48 · 398 阅读 · 0 评论 -
C和C++中的static详解
转载自http://blog.csdn.net/majianfei1023/article/details/45290467C 语言的 static 关键字有三种(具体来说是两种)用途:1. 静态局部变量:用于函数体内部修饰变量,这种变量的生存期长于该函数。[cpp] view plain copyint foo(){转载 2017-07-19 20:18:32 · 251 阅读 · 0 评论 -
int & function(),c++函数返回引用
转载自http://blog.csdn.net/keyouan2008/article/details/5771844 根据自己的理解有删改先看看该链接讨论的问题作为热身。http://topic.csdn.net/u/20070616/13/2a6a1739-1a69-4829-a90f-fdb19a61e095.html 函数返回值和返回引用是不同的函数返回值时会产生转载 2017-07-22 18:56:10 · 3896 阅读 · 0 评论 -
C++中引用符&详解
本文转载自http://www.cnblogs.com/Mr-xu/archive/2012/08/07/2626973.html对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。在 c++学习提高篇(3)---隐式指针的转载 2017-07-22 19:18:46 · 4157 阅读 · 2 评论 -
priority_queue的实现最小堆的用法
转自http://www.cnblogs.com/flyoung2008/articles/2136485.html priority_queue调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另外一种形式。先写一个用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_queu转载 2017-09-14 15:06:54 · 924 阅读 · 0 评论 -
ccf-csp之地铁修建(最小堆dijkstra算法)
最小堆dijkstra算法解ccf-csp的地铁修建问题原创 2017-09-13 19:56:48 · 1743 阅读 · 0 评论 -
csp-ccf之Markdown
问题描述 Markdown 是一种很流行的轻量级标记语言(lightweight markuplanguage),广泛用于撰写带格式的文档。例如以下这段文本就是用 Markdown 的语法写成的: 这些用 Markdown 写成的文本,尽管本身是纯文本格式,然而读者可以很容易地看出它的文档结构。同时,还有很多工具可以自动把 Markdown 文本转换成 HTML原创 2017-09-11 11:19:17 · 1179 阅读 · 1 评论 -
getline()的定义及应用
getline的两种定义参考及c++依次读取文件中字符串的方法原创 2017-09-11 19:23:26 · 5899 阅读 · 0 评论 -
引用返回
函数返回的类型返回值返回引用(reference return)返回常亮引用(const reference return)返回引用的作用可以减少复制操作(返回的是对象的话,可以避免调用复制构造函数),提高效率;引用返回的结果可以作为左值。#include <iostream>#include <cstdlib>**const** int& abc(int a, int b, int原创 2017-11-13 10:23:15 · 371 阅读 · 0 评论 -
数组指针和指针数组
详细的参考https://www.cnblogs.com/mq0036/p/3382732.html数组指针(也称行指针)定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。 如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4];转载 2017-11-13 15:15:26 · 170 阅读 · 0 评论 -
动态创建二维数组
利用数组指针char(*c)[5];try{c = new char[n][5];}catch(bad_alloc){ cerr<<"Out of Memory"<<endl; exit(1);}其中c 是一个数组指针,[5]指定的是列数。利用指针的指针try{ char **x = new char *[numberOfRows]; for(int i=0原创 2017-11-13 15:36:52 · 280 阅读 · 0 评论 -
常量成员函数
参考http://blog.csdn.net/xuxiatian/article/details/51247972 常量成员函数声明:如:int get() const;规则:1.常量成员函数不修改对象。 2.常量成员函数在定义和声明中都应加const限定 3.非常量成员函数不能被常量成员函数调用,但构造函数和析构函数除外。 4.常量(const对象)对象只能调用常量成员函数。(const对转载 2017-11-13 16:27:46 · 274 阅读 · 0 评论 -
操作符重载
#include<iostream>#include<cstdlib>using namespace std;class currency{public: currency(int init = 0) { amount = init; } currency &increase(const currency& x) {原创 2017-11-13 19:00:32 · 192 阅读 · 0 评论