![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++学习
liusandian
纯技术工科男,擅长归纳各个工学领域的知识
展开
-
句柄与指针的区别与联系
原帖地址(http://mahanyang94.blog.163.com/blog/static/25498051200911176212455/)句柄其实就是指针,但是他和指针最大的不同是:给你一个指针,你可以通过这个指针做任何事情,也许是好事,也许是通过这个指针破坏内存,干一些捣乱的事情。这个我想大家都会碰到过,因为乱用指针导致程序崩溃 句柄就没有这个缺点,通过句柄,你只能干一些转载 2016-08-12 10:30:54 · 759 阅读 · 0 评论 -
CCTYPE函数系列
#include 的函数c++中应该是#include c中应该是#include 以下为字符函数库中常用的函数:函数名称返回值isalnum()如果参数是字母数字,即字母或数字,该函数返回trueisalpha()如果参数是字母,该函数返回真isblank()如果参数是空格或水平制转载 2016-08-04 16:45:40 · 287 阅读 · 0 评论 -
String insert()总结
文件头格式#include "stdafx.h"#include #include int main( ){ using namespace std;}-----------------------------------------------------------------basic_string& insert( size_ty转载 2016-08-04 15:10:42 · 648 阅读 · 0 评论 -
string 类型详解
通过在网站上的资料搜集,得到了很多关于string类用法的文档,通过对这些资料的整理和加入一些自己的代码,就得出了一份比较完整的关于string类函数有哪些和怎样用的文档了!下面先罗列出string类的函数有哪一些,然后再罗列出函数的原型,最后到代码的实现标准C++中提供的string类得功能也是非常强大的,一般都能满足我们开发项目时使用。现将具体用法的一部分罗列如下,只起一个抛砖转载 2016-08-04 15:06:52 · 411 阅读 · 0 评论 -
编程BUG总结
代码写得多了,总会发现一些规律和一些常常犯的错误。这里做个总结,提醒自己下次不要再犯相同或者类似的错误。 1.赋值语句“=”和“==”容易混淆 并不是不知道这两者的区别,只是写代码速度过快的时候容易写错,另外找BUG的时候不容易找出来,下次注意。一个是赋值,一个是条件语句。 2.循环边界问题 比如在做“单词倒排”这道题的时候,因为原创 2016-08-04 14:56:00 · 311 阅读 · 0 评论 -
C++之函数参数按引用传递
C++引用与指针的比较引用是C++中的概念,初学者容易把引用和指针混淆一起。一下程序中,n是m的一个引用(reference),m是被引用物(referent)。 int m; int &n = m;n相当于m的别名(绰号),对n的任何操作就是对m的操作。所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。l 引用的规则:(1)引用被创建的同时必须被初转载 2016-08-04 12:44:49 · 466 阅读 · 0 评论 -
静态函数讲解
1、静态全局变量(又称全局静态变量): (1) 静态全局变量的定义:在全局变量前加一个static,使该变量只在这个源文件中可用。 (2)全局变量与全局静态变量的区别: (a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。 (b)若程序由多个源文件构成时,全局变量与全局静态变量不转载 2016-08-04 11:36:52 · 6956 阅读 · 0 评论 -
关于string类型的字符串是否以\0结尾
今天在带大一学生C++上机时,涉及到一个string类型的字符串是否以\0结尾的问题,本来我很坚定string类型结尾并没有\0,C风格的字符数组才会那样。但是程序运行结果却说明string类型的字符串后面确实有\0。于是回实验室后自己又实验了下,才发现这和编译器有关,真坑爹。对于如下一段测试程序,在C-free 5.0和g++ 4.1上输出yes,而在VS2010上执行时报错!转载 2016-08-04 11:15:46 · 2975 阅读 · 1 评论 -
C++用string 定义字符串数组
[cpp] view plain copyprint?#include #include using namespace std; #include #include using namespace std; [cpp] view plain copyprint?int main()转载 2016-08-04 10:24:16 · 2031 阅读 · 0 评论 -
对vector等STL标准容器进行排序操作
西方有句谚语:不要重复发明轮子!STL几乎封装了所有的数据结构中的算法,从链表到队列,从向量到堆栈,对hash到二叉树,从搜索到排序,从增加到删除......可以说,如果你理解了STL,你会发现你已不用拘泥于算法本身,从而站在巨人的肩膀上去考虑更高级的应用。排序是最广泛的算法之一,本文详细介绍了STL中不同排序算法的用法和区别。1 STL提供的Sort 算法C++之转载 2016-08-04 17:12:53 · 378 阅读 · 0 评论 -
Vector反向迭代器使用
反向迭代器1 反向迭代器其实没什么特殊的,他只是在遍历的方向上和普通迭代器不通而已:每一个容器里面都有Iterator(迭代器),可以从容器的begin位置到end-1位置,通过++来遍历。同样也有个反向迭代器reverse_iterator,从rbegin(=end)到rend(=begin-1)反向遍历,仍然通过++.转载 2016-08-04 17:34:34 · 988 阅读 · 0 评论 -
C++面试宝典2011
1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要转载 2016-08-11 23:06:56 · 317 阅读 · 0 评论 -
STL 之 deque容器详解
Deque 容器deque容器是C++标准模版库(STL,Standard Template Library)中的部分内容。deque容器类与vector类似,支持随机访问和快速插入删除,它在容器中某一位置上的操作所花费的是线性时间。与vector不同的是,deque还支持从开始端插入数据:push_front()。使用deque容器之前必须加上头文件:#include;转载 2016-08-22 17:38:41 · 437 阅读 · 0 评论 -
STL 之 list 容器详解
STL之list容器详解List 容器list是C++标准模版库(STL,Standard Template Library)中的部分内容。实际上,list容器就是一个双向链表,可以高效地进行插入删除元素。使用list容器之前必须加上头文件:#include;list属于std命名域的内容,因此需要通过命名限定:using std::list;也可以直接使用全局的命名空间方转载 2016-08-22 17:36:43 · 240 阅读 · 0 评论 -
STL 之vector详解
STL之vector容器详解vector 容器vector是C++标准模版库(STL,Standard Template Library)中的部分内容。之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说:vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。使用vector容器之前必须加上头文件:#include;vector属于std命名转载 2016-08-22 17:34:23 · 243 阅读 · 0 评论 -
strcpy函数实现的几种方式
C/C++——strcpy函数的实现 和解析题目: 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数。 2.解释为什么要返回char *。(一)高质量c++编程上的答案五、编写strcpy函数(10分转载 2016-08-17 16:54:28 · 10804 阅读 · 0 评论 -
C/C++ struct 区别
今天参看了louden用c编写的编译器,发现其中一些地方使用struct很奇妙。所以又研究了一下struct的区别,并发现c和c++在某些地方是有区别的。struct作为类的一种特例,是用来自定义数据结构的,在编程的过程中是很有用的。C和C++的主要区别是:一个结构标记声明后,C语言必须在结构标记前加上struct才能作为结构类型名,而C++语言中,结构标记可以直接作为结构类型名使用。转载 2016-08-17 16:48:16 · 308 阅读 · 0 评论 -
迭代器的使用实例
//统计字符#include #include#include#include#include using namespace std;int main(){ string str; vector v; vector::iterator iter = v.begin(); getline(cin, str); int len = str.size(), letter_n转载 2016-08-04 18:38:54 · 516 阅读 · 0 评论 -
vector使用排序函数实例
在OJ上遇到一道题,大概是统计各类数据的个数,然后排序。题目描述如下:如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。实现以下接口: 输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用) 按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出 清空目前的统计结果,重新统计原创 2016-08-04 17:43:41 · 1130 阅读 · 0 评论 -
各种整型的取值范围
unsigned int 0~4294967295 int 2147483648~2147483647 unsigned long 0~4294967295long 2147483648~2147483647long long的最大值:9223372036854775807long long的最小值:-9223372036854775808unsigne转载 2016-08-03 17:29:22 · 1233 阅读 · 0 评论 -
用位运算实现加减乘除
听同学百度二面中,不准用四则运算操作符来实现四则运算。一想就想到了计算机组成原理上学过的。位运算的思想可以应用到很多地方,这里简单的总结一下用位运算来实现整数的四则运算。加法运算:[cpp] view plain copyint AddWithoutArithmetic(int num1,int num2) { if(nu转载 2016-06-22 12:44:32 · 424 阅读 · 0 评论 -
国内C/C++刷题网站汇总
作者:Luau Lawrence链接:https://www.zhihu.com/question/25574458/answer/31175374来源:知乎- Welcome To PKU JudgeOnline 北京大学的Online Judge。POJ上面的题目有点老了,但好处是做的人多,经典算法题多,解题报告也多,适合上手。- ZOJ :: Home 浙江大转载 2016-06-22 12:27:07 · 6051 阅读 · 0 评论 -
C++中substr函数的用法
C++中substr函数的用法#include#includeusing namespace std;main(){string s("12345asdf");string a=s.substr(0,5); //获得字符串s中 从第0位开始的长度为5的字符串//默认时的长度为从开始位置到尾cout<<a<<endl;}输出结果为:转载 2016-06-29 20:26:05 · 348 阅读 · 0 评论 -
C++如何输出特定格式浮点数
1.C++情况下先贴一段代码:float c = 2.5555566;cout以上代码可以输出2.55,精确到小数点后两位,利用的是头文件(or )中的2个函数。如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方原创 2016-06-29 18:50:39 · 8274 阅读 · 0 评论 -
C++经典书籍推荐
C++是一门广泛用于工业软件研发的大型语言。它自身的复杂性和解决现实问题的能力,使其极具学术研究价值和工业价值。和C语言一样,C++已经在许多重要的领域大获成功。 然而,一个不可否认的现实是,在低阶程序设计领域,C++挤压着C同时也在承受着C的强烈反弹,而在高阶程序设计领域,Java和C#正在不断蚕食着C++的地盘。也许C++与C合为一体永远都是一个梦想,也许Java和C#的狂潮终将迫使C++回归转载 2016-06-29 19:53:15 · 5911 阅读 · 0 评论 -
13条注释 tips
下面的13条小贴士可以帮助你写出更规范、更容易维护的代码注释。1、逐层注释使用统一格式对每一个语句块进行注释,如:类:简单描述、作者、最后修改时间等方法:关于该方法的目的、函数、参数、返回值的描述在团队工作中,使用统一的注释规范显得尤为重要。当然,也推荐使用一些专门用来添加代码注释的工具,如C#中的XML、Java中的Javadoc等。2、使用段落型注释转载 2016-06-29 16:41:07 · 359 阅读 · 0 评论 -
揭密 extern "C"
1.引言C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显转载 2016-06-29 16:34:18 · 247 阅读 · 0 评论 -
.h 与.hpp文件的区别
hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库。转载 2016-06-14 10:39:55 · 537 阅读 · 0 评论 -
你应当如何学习C++(以及编程)
By 刘未鹏(pongba)C++的罗浮宫(http://blog.csdn.net/pongba)JavaScript是世界上最受误解的语言,其实C++何尝不是。坊间流传的错误的C++学习方法一抓就是一大把。我自己在学习C++的过程中也走了许多弯路,浪费了不少时间。 为什么会存在这么多错误认识?原因主要有三个,一是C++语言的细节太多。二是一些著名的C++书籍总在(不管有意还转载 2016-06-13 23:21:06 · 245 阅读 · 0 评论 -
代码注释规范-google版本
注释注释虽然写起来很痛苦,但对保证代码可读性至为重要,下面的规则描述了应该注释什么、注释在哪儿。当然也要记住,注释的确很重要,但最好的代码本身就是文档(self-documenting),类型和变量命名意义明确要比通过注释解释模糊的命名好得多。注释是为别人(下一个需要理解你的代码的人)而写的,认真点吧,那下一个人可能就是你!1. 注释风格(Comment Style)转载 2016-06-29 13:05:06 · 2230 阅读 · 0 评论 -
STL sort()函数详解
西方有句谚语:不要重复发明轮子!STL几乎封装了所有的数据结构中的算法,从链表到队列,从向量到堆栈,对hash到二叉树,从搜索到排序,从增加到删除......可以说,如果你理解了STL,你会发现你已不用拘泥于算法本身,从而站在巨人的肩膀上去考虑更高级的应用。排序是最广泛的算法之一,本文详细介绍了STL中不同排序算法的用法和区别。1 STL提供的Sort 算法C++之转载 2016-06-30 10:49:26 · 376 阅读 · 0 评论 -
C++ 输入字符串和string 类型总结
小白今天在编写一个c++程序时,想要键盘输入字符数组,愚笨的使用了for(i=0;i>a[i] ;但在调试的时候发现,若键盘输入xiaobai hao shuai,程序只能获取xiao,不能获取到完整的“ xiaobai hao shuai ”,网上搜了一圈后,结论是: >>会过滤掉不可见字符(空格,TAB键,回车)小白然后开始思考能够识别不可见字符的字符串输入方式,结论如下:方法转载 2016-06-22 11:29:29 · 982 阅读 · 0 评论 -
VC++6.0调试
用VC来写程序,有时总是出这样那样的问题,没办法只能自己上网查资料来解决,在这里把自己常见的问题和一些技巧贴出来分享给大家,希望对大家有用,也省去大家再去搜索的烦恼 1.如何在Release状态下进行调试Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disabl转载 2016-07-07 17:13:54 · 449 阅读 · 0 评论 -
伪代码书写规范
伪代码的写法伪代码(Pseudocode)是一种算法描述语言。使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal,C,Java,etc)实现。因此,伪代码必须结构清晰、代码简单、可读性好,并且类似自然语言。 介于自然语言与编程语言之间。 它以编程语言的书写形式指明算法的职能。相比于程序语言(例如Java, C++,C, Dephi 等等)它更类似自然语言。转载 2016-06-15 15:20:50 · 6575 阅读 · 0 评论 -
转载:malloc()与new()的区别详解
1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。1.2 voi转载 2016-06-30 23:52:38 · 253 阅读 · 0 评论 -
malloc与new的区别
1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。1.2原创 2016-06-30 23:45:40 · 360 阅读 · 0 评论 -
new,delete总结
一 数组和new 数组类型变量三个重要限制:1 数组长度不变2 在编译时必须知道其长度3 数组只在定义它的块语句内存在突破数组的限制针对2 需要在运行时动态的分配数组针对3 动态分配的数组一直存在,直到程序显示释放它 自由存储区:又叫做堆。每一个程序在执行时都占用一块可用的内存空间,用于存放动态分配的对象,此内存空间称为程序的自由存储区或堆。C语言使用一转载 2016-06-30 22:20:35 · 226 阅读 · 0 评论 -
最大公共字符串输出
一.华为OJ题目:查找两个字符串a,b中的最长公共子串。详细描述:查找两个字符串a,b中的最长公共子串。接口设计及说明: /***************************************************************************** Description : 查找两个字符串a,b中的最长公共子串 Input Par原创 2016-06-30 20:44:07 · 558 阅读 · 0 评论 -
static 函数和普通函数
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不转载 2016-06-30 20:24:19 · 403 阅读 · 0 评论 -
GitHub user guide:Hello world
The Hello World project is a time-honored tradition in computer programming. It is a simple exercise that gets you started when learning something new. Let’s get started with GitHub!You’ll learn h转载 2016-06-29 13:01:57 · 571 阅读 · 0 评论