
c++/c基础
文章平均质量分 68
WildKid1024
骐骥一跃,不能十步。驽马十驾,功在不舍!
展开
-
c++运算符优先级总结
经常写程序的时候,遇到运算符优先级的问题,令我汗颜的是,查书的次数挺多的……狠狠心,总结下。不过还要结合大量的编程实践来深入脑海。1、首先永远忘不了的是,逗号运算符级别最低,毫无争议的还有()括起来的,人工设定了最高优先级,先算括号里的。2、非人为的,就是四个,函数调用(),[]数组下标,点运算符,间接->运算符。他们是优先级最高的,从左到右。拿->记忆结合性3、还有最起码知道,所有的单目运算符具原创 2015-10-24 16:30:48 · 480 阅读 · 0 评论 -
codeblocks快捷键(转载)
==日常编辑==? 按住Ctrl滚滚轮,代码的字体会随你心意变大变小。? 在编辑区按住右键可拖动代码,省去拉(尤其是横向)滚动条之麻烦;相关设置:Mouse Drag Scrolling。? Ctrl+D可复制当前行或选中块。? Ctrl+Shift+C注释掉当前行或选中块,Ctrl+Shift+X则解除注释。? Tab缩进当前行或选中块,Shift+Tab减少缩进。? 可拖动选中块原创 2015-10-24 16:32:24 · 356 阅读 · 0 评论 -
inline内联函数的优缺点
优点:1)inline定义的内联函数,函数代码被放入符号表中,在使用时进行替换(像宏一样展开),效率很高。2)类的内联函数也是函数。编绎器在调用一个内联函数,首先会检查参数问题,保证调用正确,像对待真正函数一样,消除了隐患及局限性。3)inline可以作为类的成员函数,刀可以使用所在类的保护成员及私有成员。缺点:内联函数以复制为代价,活动产函数开销1)如果函数的代码较长,使用内联将消耗过多内存2)原创 2015-10-24 16:32:57 · 1427 阅读 · 0 评论 -
为什么不能在子类的初始化列表里初始化父类的成员
好几次遇到此类问题了:便不得不找些资料弄明白它; 具体代码是:2345678910class A {protected: int n_;}; class B : public A {public: B() : n_(0) {}}; 这是简化的,作为分析问题的。 然后无情的报错: |error: class 'B' does not have any field n原创 2015-10-24 16:32:59 · 4011 阅读 · 0 评论 -
二项式系数的递归算法
??写递归函数时,偶然想起来二项式系数的递归写法。废话不说,上代码。code:#include #include using namespace std;int er(int n,int k){if(k==0||k==n)return 1;elsereturn (er(n-1,k-1)+er(n-1,k))%2;}int main(){ int a,b; while (cin>>a>>b) cou原创 2015-10-24 16:30:59 · 3129 阅读 · 0 评论 -
传值的一点认识
今天又把C++课本翻了一遍,发现了好多以前没彻底弄清楚的问题,比如说传值。说起传值,最先想到的恐怕是赋值,他是最基本的传值方式,不过有时候我们希望用另外的方式来传值。传值一共有三种方式,第一种是赋值,第二种是指针(传地址),第三种是引用。三种方式的区别: 赋值是最简单的,打个比方说,它实质上是把 你copy出另一个你放到栈里(可以理解成客栈,呵呵,虽然不太恰当),然后对co原创 2015-10-24 16:31:07 · 343 阅读 · 0 评论 -
openjudge基础题3计算书费
总时间限制: 1000ms内存限制: 65536kB描述下面是一个图书的单价表:计算概论 28.9 元/本数据结构与算法 32.7 元/本数字逻辑 45.6元/本C++程序设计教程 78 元/本人工智能 35 元/本计算机体系结构 86.2 元/本编译原理 27.8元/本操作系统 43 元/本计算机网络 56 元/本JAVA程序设计 65 元/本给定每种图书购买的数量,编程原创 2015-10-24 16:31:12 · 3207 阅读 · 0 评论 -
pow(x,y)函数
实现浮点类型的幂运算,函数原型为: double pow(double x, int n) 在求解这个问题的时候是一个很挣扎的过程,因为它不是报错而是一直提示你超出时间,那么必须一次次的考虑怎样降低时间复杂度。 首先最直接的思路是下面这样的,就跟直观的数学求解一样。 double pow(double x, int n){ if(n==0) return 1.0;原创 2015-10-24 16:31:57 · 4784 阅读 · 0 评论 -
vector中find和find_if的用法
今天郁闷写大作业中。唉。。每次写都tm暴力遍历。有stl你用毛遍历啊。现在记下来。再遍历就剁手吧。(- -!)stl包括容器、迭代器和算法:容器 用于管理一些相关的数据类型。每种容器都有它的优缺点,不同的容器反映出程序设计的不同需求。容器自身可能由数组或链表实现,或者容器中的每个元素都有特殊的关键值。迭代器 用于遍历一个数据集中的每个元素。这些数据集可能是容器或者容器的子集。迭代器的主要优点是它们原创 2015-10-24 16:32:46 · 24651 阅读 · 1 评论 -
C++中几种将整数转换成二进制输出的方法
看《编程之美》第二节的时候,它是定义的一个整型,然后取位。但是他的那个或运算符号好像写错了,写成了异或符号“^”,应该是“|”。我就突然对二进制的输出感兴趣了。想知道怎样输出二进制。我们知道C++输出十六进制是cout〈〈hex〈〈 a;而八进制是cout〈〈 ocx〈〈 a;二进制则没有默认的输出格式,需要自己写函数进行转换,于是上网搜索了一下。网上思路真是广泛啊。下面列出一些方法。 #inc...原创 2015-10-24 16:31:52 · 21907 阅读 · 4 评论 -
dp问题:采药
今天把采药A了,属于dp问题,主要思路是把所有时间都存进一个数组中,数组的值对应药的价值,下标是时间,然后记忆化搜索,碰到价值高的就赋值,相比于摘花生,辰辰是一个聪明的猴子,不废话了,上代码。Code:#include #include using namespace std;int ji[1002];int main() { int t,m,a,b,i,j; w原创 2015-10-24 16:31:04 · 687 阅读 · 0 评论 -
C++的头文件和实现文件分别写什么
在C++编程过程中,随着项目的越来越大,代码也会越来越多,并且难以管理和分析。于是,在C++中就要分出了头(.h)文件和实现(.cpp)文件,并且也有了Package的概念。对于以C起步,C#作为“母语”的我刚开始跟着导师学习C++对这方面还是感到很模糊。虽然我可以以C的知识面对C++的语法规范,用C#的思想领悟C++中类的使用。但是C#中定义和实现是都在一个文件中(其实都是在类里面),而使用C的原创 2015-10-24 16:30:45 · 465 阅读 · 0 评论 -
【转载】输出二进制 C
想知道怎样输出二进制。我们知道C++输出十六进制是cout〈〈hex〈〈 a;而八进制是cout〈〈 ocx〈〈 a;二进制则没有默认的输出格式,需要自己写函数进行转换,于是上网搜索了一下。网上思路真是广泛啊。下面列出一些方法。 #include 〈iostream〉 #include 〈list〉 #include 〈bitset〉 using namespace std; //原创 2015-10-24 16:32:13 · 486 阅读 · 0 评论 -
c++指针总结(易混淆)
一:指针的概念 指针是一个特殊的变量,里面存储的数值是内存里的一个地址。学好指针,重要的是搞清楚指针的四个方面的内容:指针的类型、指针所指向的类型、指针所指向的内存区、指针本身占据的内存区。1、 如何判断指针的类型呢: 12345int *p;char *p;int **p;int (*p)[3];int *(*p)[4]; 上面的五个声明,指针的类型分别是:int *、char *、int原创 2015-10-24 16:30:51 · 350 阅读 · 0 评论 -
刚刚有水了一道,用递归实现进制转换
code :#include using namespace std;int a[101],i=0;void jinzhi (int n){ if (n==1) a[i++]=1; else { a[i++]=n%2; jinzhi(n/2); }}int main (){ int k,j; cin>>k; jinzhi(k); for (int j=i-1;j>=0;j--) cout}其实原原创 2015-10-24 16:31:01 · 292 阅读 · 0 评论 -
递归经典例子
程序调用自身的编程技巧称为递归( recursion)。一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。用递归思想写出的程序往往十分简洁易懂。一般来说,递归需要有边界条件原创 2015-10-24 16:31:10 · 1514 阅读 · 0 评论 -
查找和排序的一点浅显认识
以前老是混淆各种排序的方法,对此我也感到十分苦恼,去网上搜索各种排序教程,结果收获颇微,就在期末考试时,我还担心会有排序的题(事实证明我多虑了),不过作为算法的基本功,不扎实迟早会出大问题,今天把查找和排序通了一遍,遇见排序我再也不怕不怕啦!!查找分为:顺序查找和二分查找(折半查找)顺序查找就是一个一个比对,这个有点像扫描病毒的原理,比如你手机下载的时候不小心附带了病毒,那么手机上的杀毒软就把其特原创 2015-10-24 16:31:15 · 502 阅读 · 0 评论 -
快速pow和sqrt的小技巧 hdu4282
http://acm.hdu.edu.cn/showproblem.php?pid=4282今年网络赛。。天津赛区。。有道题。。是这样的。。。X^Z + Y^Z + XYZ = K 给出K ,求XYZ,我思路很明确。。。枚举其二,然后二分其一,但是始终TLE。。。。晚上回去之后,看了人家报告,。。。才发现。。。原来是微软的函数pow惹的祸。。。我本来以为微软的函数写的都很好。。效率很高。原创 2015-10-24 16:31:55 · 1215 阅读 · 0 评论 -
#define和const的区别
(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。(2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。(3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。 const常量会在内存中分原创 2015-10-24 16:32:16 · 2138 阅读 · 0 评论 -
【转载】define与typedef区别与联系
define与typedef区别与联系 1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正 确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如: #define PI 3.1415926 程序中的:area=PI*r*r 会替换为3.1415926*r*r 如果你把#define语句中的数字9 写成字母g 预处理也照样代入。当你原创 2015-10-24 16:32:19 · 309 阅读 · 0 评论 -
[C++][线程安全]单例模式下双检查锁和线程
问题在设计模式中,有一个很经典的模式-单例模式,它可能是实现上最简单的模式,在代码中也经常使用,在单线程下,毫无疑问延迟化加载是比较常用的,但是在多线程条件下,单例模式的延迟加载可能就会出现一些问题。如以下的代码:T* GetInstance(){ if (pInst == NULL) { pInst = new T; } return pInst;}如果检测代码和实...原创 2018-09-26 23:02:05 · 2684 阅读 · 1 评论