
C/C++
文章平均质量分 76
tham_
凡是新的事情在起头总是这样,起初热心的人很多,而不久就冷淡下去,撒手不做了。因为他已经明白,不经过一番苦工是做不成的,而只有想做的人,才忍得过这番痛苦。
展开
-
详谈面向对象的重载——>“函数重载”与“运算符重载”
写在前面:函数重载的重要性不言而明,但是你知道C++中函数重载是如何实现的呢(虽然本文谈的是C++中函数重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题1、声明/定义重载函数时,是如何解决命名冲突的?(抛开函数重载不谈,using就是一种解决命名冲突的方法,解决命名冲突还有很多其它的方法,这里就不论述了)2、当我们调用一个重载的函数时,又是如何去解析的?(即怎么知道调用的是哪个函数呢)这两个问题是任何支持函数重载的语言都必须要解决的问题!带着这两个问题,我们开始本文的探讨。本文的主原创 2014-12-25 22:04:37 · 1461 阅读 · 0 评论 -
[C++] STL (Algorithm,bitset)
algorithm头文件 定义了一些应用于区间上的函数。区间是可以用迭代器或指针访问的对象序列,比如数组和一些 STL 容器。注意,尽管算法直接作用于其迭代器,但不影响任何容器的结构(不改变其大小或存储方式)。非修改操作(Find):for_each在区间上应用函数find在区间上查找指定值find_if在区间上查找满足条件的元素原创 2015-05-05 19:52:59 · 1052 阅读 · 0 评论 -
图算法 单源最短路径 Dijkstra算法(邻接表/邻接矩阵+优先队列STL)
一、前言 最短路径算法,顾名思义就是求解某点到某点的最短的距离、消耗、费用等等,有各种各样的描述,在地图上看,可以说是图上一个地点到达另外一个地点的最短的距离。比方说,我们把地图上的每一个城市想象成一个点,从一个城市到另一个城市的花费是不一样的。现在我们要从上海去往北京,需要考虑的是找到一条路线,使得从上海到北京的花费最小。有人可能首先会想到,飞机直达啊,这当然是时间消耗最小的方法,但是原创 2015-05-27 17:07:16 · 2656 阅读 · 0 评论 -
const char*, char const*, char*const使用时的区别
案例1:#includeusing namespace std;void main(void){ // char* a 与 char a[] 的区别 char* a = "abcdef"; // a为一指针,其值可以改变。现在a指向的是一常量字符串 cout << a << endl; a = "ghijkl"; // a现在指向另一常量原创 2015-05-19 16:47:06 · 11068 阅读 · 2 评论 -
NOI系列赛中 C++容器使用总结
第1章 容器第1条:慎重选择容器类型。标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一“重型”string。非标准的关联容器hash_set、hase_multiset、hash_map和hash_mult原创 2015-08-26 10:35:00 · 2703 阅读 · 0 评论 -
C++ Primer Plus第6版重点笔记
下面是我看《C++ Primer Plus》第6版这本书后所做的笔记,作为备忘录便于以后复习。笔记部分C++的const比C语言#define更好的原因?首先,它能够明确指定类型,有类型检查功能。其次,可以使用C++的作用域规则将定义限制在特定的函数或文件中。第三,可以将const用于更复杂的类型,比如数组和结构。C语言中也有const,其与C++中co原创 2015-09-21 14:19:15 · 952 阅读 · 0 评论 -
C++编程思想重点笔记
C和C++指针的最重要的区别在于:C++是一种类型要求更强的语言。就void *而言,这一点表现得更加突出。C虽然不允许随便地把一个类型的指针指派给另一个类型,但允许通过void *来实现。例如: bird* b; rock* r; void* v; v = r; b = v;C++不允许这样做,其编译器将会给出一个出错信息。如果真的想这样做,必须显式地使用映射原创 2015-09-21 14:25:29 · 711 阅读 · 0 评论 -
探究 Windows 下编译的栈空间 以及 DEV C++工具栈空间的调整(设置)
关于堆栈的一些认识:程序中变量的定义不是分配在堆上,就是在栈上。今天看了几篇讨论堆和栈的文章,里面讲到栈的默认大小可能是1m,也可能是2m,好奇之下试试。int main (int argc, char *argv[]){ int tmp[600000] = {0}; tmp[1000]=100; printf("%d",tmp[1000]);}大概就是2.原创 2015-12-15 17:41:44 · 8702 阅读 · 2 评论 -
单链表的基本操作(C语言实现)
//////////////////////////////////////////// //单链表的初始化,建立,插入,查找,删除。// //////////////////////////////////////////// #include #include typedef int ElemType; //////////////////////////////原创 2016-04-07 17:46:45 · 12506 阅读 · 5 评论 -
C++基础和STL,Effective C++笔记
C++基础staticstatic变量存储在静态数据区相对于function:在函数内,变量,内存只被分配一次,多次调用值相同相对于其他模块(.c文件):变量和函数,不能被模块外其他函数访问(private)相对于类:类中的static变量和函数属于整个类,而不是对象全局变量 VS 全局静态变量若程序由一个源文件构成时,全局变量与全局静态变量没有区别。若原创 2016-04-16 20:07:54 · 5551 阅读 · 0 评论 -
transform函数转换字符串string的大小写
首先看一下transform函数的用户手册:template OutputIterator transform ( InputIterator first1, InputIterator last1, OutputIterator result, UnaryOperator op );template < class Input原创 2016-04-20 15:45:24 · 2765 阅读 · 0 评论 -
C/C++中的getline函数总结
getline函数是一个比较常见的函数。根据它的名字我们就可以知道这个函数是来完成读入一行数据的。现在对getline函数进行一个总结。在标准C语言中,getline函数是不存在的。下面是一个简单的c语言实现方式:int getline_(char s[],int lim){ int c,i; i=0; while((c=getchar())!=EOF原创 2015-05-16 20:37:29 · 6674 阅读 · 1 评论 -
【C/C++】点滴基础知识(EOF,sscanf)
EOF 学习C语言的时候,遇到的一个问题就是EOF。 它是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。比如,下面这段代码就表示,如果不是文件结尾,就把文件的内容复制到屏幕上。int c;while ((c = fgetc(fp)) != EOF) {原创 2015-05-05 20:09:13 · 2115 阅读 · 0 评论 -
C++ string 类的函数
string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常string原创 2015-05-05 17:32:52 · 841 阅读 · 0 评论 -
三十分钟掌握STL的使用
文章转载来自: Hongfei Yan的cool links这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。译者:karycontact:karymay@163.netSTL概述STL的一转载 2015-01-04 13:52:16 · 758 阅读 · 0 评论 -
初探C++ 中的 new 和 delete
在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢?new 和 delete 是函数吗?new [] 和 delete [] 又是什么?什么时候用它们?你知道 operator new 和 operator delete 吗?为什么 new [] 出来的数组有时可以用 delete 释放有时又不行?…如果你对这些问题都有疑问的话,原创 2015-03-26 22:31:39 · 645 阅读 · 0 评论 -
C++ 栈和队列的介绍与使用
使用标准库的栈和队列时,先包含相关的头文件#include#include定义栈如下:stack stk;定义队列如下:queue q;栈提供了如下的操作s.empty() 如果栈为空返回true,否则返回falses.size() 返回栈中元素的个数s.pop() 删除栈原创 2015-03-29 22:38:29 · 20160 阅读 · 0 评论 -
gcc与g++ 的区别
gcc和g++都是GNU(组织)的一个编译器。 误区一:gcc只能编译c代码,g++只能编译c++代码 两者都可以,但是请注意: 1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。2.编译阶段,g++会调用gcc,对于c++原创 2015-03-24 11:03:23 · 596 阅读 · 0 评论 -
C++ 对象和实例的区别,以及用new和不用new创建类对象区别
起初刚学C++时,很不习惯用new,后来看老外的程序,发现几乎都是使用new,想一想区别也不是太大,但是在大一点的项目设计中,有时候不使用new的确会带来很多问题。当然这都是跟new的用法有关的。new创建类对象,使用完后需使用delete删除,跟申请内存类似。所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化的全局类指针似乎更加高原创 2015-04-06 21:44:20 · 34506 阅读 · 5 评论 -
C++中struct和class的区别及C++ this变量和const变量类型
在C++ 语言中class是定义类的关键字,C++中也可以使用struct定义类。两者区别是,用class定义的类,如果数据成员或成员函数没有说明则默认为private(私有)的,而用struct定义的,默认为public(公共)的。 示例#include using namespace std; class C { public:原创 2015-04-06 21:26:51 · 2688 阅读 · 0 评论 -
c++中的点号(.),冒号(:)和双冒号(::)运算符
1.冒号(:)用法(1)表示机构内位域的定义(即该变量占几个bit空间)typedef struct _XXX{ unsigned char a:4; unsigned char c;} XXX;(2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型原创 2015-04-06 20:42:04 · 16140 阅读 · 0 评论 -
类的成员变量初始化总结
1. C++变量的初始化方式首先把需要初始化的成员变量分为几类:Ø 一般变量(int)Ø 静态成员变量(static int)Ø 常量(const int )Ø 静态常量(static const int) 对应的初始化方式是:Ÿ 一般变量可以在初始化列表里或者构造函数里初始化,不能直接初始化或者类外初始化Ÿ 静态成员变量必须在类外初始化Ÿ 常原创 2015-04-08 11:52:23 · 14091 阅读 · 2 评论 -
(struct)结构体变量作为函数参数调用的方法小结
结构体变量作为函数参数传递的3种方法将一个结构体变量中的数据传递给另一个函数,有下列3种方法:用结构体变量名作参数。一般较少用这种方法。用指向结构体变量的指针作实参,将结构体变量的地址传给形参。用结构体变量的引用变量作函数参数。原创 2015-04-29 19:37:38 · 96650 阅读 · 16 评论 -
OI (信息 ) 竞赛中的对拍程序,造数据,对拍利器
作为一名OIer,比赛时,对拍是必须的 不对拍,有时可以悔恨终身首先,对拍的程序 一个是要交的程序 另一个可以是暴力、搜索等,可以比较慢,但是必须正确下面是C++版对拍程序(C++ & cmd) 注意:所有程序不用加文件输入输出#include#include#includeint main(){ long s,t; while(1){原创 2017-08-19 15:11:20 · 5084 阅读 · 2 评论