C++
文章平均质量分 71
SZL-C
潜力股
展开
-
c++入门:输入输出流
C语言中I/O存在问题:1、在C语言中,用prinff和scanf进行输入输出,往往不能保证所输入输出的数据是可靠的、安全的。学过C语言的读者可以分析下面的用法:想用格式符%d输出一个整数,但不小心错用了它输出单精度变量和字符串,会出现什么情况?假定所用的系统int型占两个字节。printf(“%d”,i); //i为整型变量,正确,输出i的值 printf(“%d”,f); //f为单精原创 2016-12-26 23:35:55 · 423 阅读 · 0 评论 -
C/C++ 异常处理
现在写代码的时候就都会习惯的写下下面的代码:int main(){ return 0;}这个也是可以编译通过的,我们知道:main函数是入口函数,那么return 0; 就是结束语句,当程序执行到return 0; 的时候也表示这个程序“寿终正寝”了,但是很多时候,程序是不能“寿终正寝”的,也就是我们所说的异常了。现在我们就来看一下C语言和C++中异常是怎么处理的:C语言的异常处理:1、原创 2017-04-03 13:11:36 · 569 阅读 · 0 评论 -
shared_ptr:定制删除器 和 循环引用
前面我们介绍智能指针的时候,说了两个智能指针分别是:auto_ptr和scoped_ptr,auto_ptr有问题,为此,scoped_ptr的出现解决了这个问题,scoped_ptr太霸道,不允许别人和他共用一块内存空间,所以,我们还得想办法解决这个问题。回想我们以前看过内容,当提到共用一块内存空间的时候,我们会想到什么?当然是深拷贝和浅拷贝了,最后我们是不是有给出了一个写时拷贝,就是通过引用计数原创 2017-04-13 21:26:08 · 973 阅读 · 0 评论 -
C++ 大总结
继C语言之后,C++也告一个段落了,不过,只是总要串起来才能更有效的掌握,那么现在就来再回顾一下C++的内容,并且将其串起来。在学习C++之前,我们就用C语言实现了顺序表和链表,这是学习数据结构的基础,提前接触总是好的,在学习c++之后,我们又实现了了两次,分别是使用类实现、使用模板类实现。那么接下来我们就进入C++的第一个主题——类类说到类,我就不得不提结构体,当然不是C语言中的结构体,而是C++原创 2017-04-25 18:52:47 · 529 阅读 · 0 评论 -
c++中类和对象的总结
类和对象的区别类是抽象的,对象是具体的,所以,类不占用内存,而对象占用内存。总之一句话,类是对象的抽象,对象是类的具体事例。 例如:类是水果的话,那么对象就是苹果……类中的函数1、类的成员函数:是指把函数的原型和定义写在类的内部的函数。是类的成员,可以操作类中的所有对象,可以访问对象中的所有成员。类的成员函数可以定义在类的内部,也可以放在类的外部使用(::)域操作符来定义成员函数,看例子:clas原创 2017-02-16 11:24:57 · 1217 阅读 · 0 评论 -
智能指针:auto_ptr 和 scoped_ptr
很多人都说:C++比Java难,难就难在指针,指针很难学,但是不可否认,通过指针,我们确实将很多问题解决了,不过为什么要引入指那个指针呢?首先这里先声明一点:智能指针并不是指针,它的本质是个类,不过,它的功能是自动管理指针所指向的动态内存和释放工作,所以叫他智能指针。那么为什么要引入智能指针呢?先来看一个例子:int FunTest(){ int *p = new int; if原创 2017-04-08 20:02:38 · 2011 阅读 · 1 评论 -
【牛客】顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16思路: 1、求出行和列原创 2017-08-30 12:59:25 · 363 阅读 · 0 评论 -
重新调整数组的顺序是奇数位于偶数的前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变思路: 从前向后遍历,先找出第一个偶数; 然后以这个偶数为基准,向后找出奇数,插入到这个偶数的前面class Solution {public: void reOrderArray(vector<int> &array原创 2017-08-30 13:02:11 · 443 阅读 · 0 评论 -
C++ 实现 atoi
atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(‘\0’)才结束转换,并将结果返回。#include<iostream>using namespace std;//模拟实现 atoiint atoi_my(const char *str){原创 2017-04-01 23:02:15 · 3355 阅读 · 1 评论 -
引用和指针
在学习C语言的时候,函数传参介绍了两种方式,一种是传值,另一种是传址。传值的时候,函数调用过程中会生成一种临时变量用形参的形式代替,最终把实参的值传递给新分配的临时变量。这种方式的有点很明显,就是避免函数调用的副作用,确定无法改变形参的值,不过缺点也是这个,当需要改变形参的时候,却无法实行。这个时候可以通过传址,即,通过指针的传递来改变实参的值。比如:最开始我们学习的交换函数。void Swap(i原创 2017-03-17 16:34:25 · 386 阅读 · 0 评论 -
c++运算符重载(复数类为例)
我们所知道的运算符有很多,基本上概括了所有的数据,之所以说基本上,还有特殊的情况,我们所知道的运算符并不能直接的进行处理。今天就拿复数的运算作为例子。要运算两个数的和,很简单的a+b,我们使用了“+”,这个问题在我们学习复数之前一直都是直接进行的。不过,我们知道复数有实部和虚部,两个复数相加的时候,需要分开,实部相加,虚部相加,虽然看着也很简单,但是它不是一步完成的。这个时候我们就引入一个新的概念,原创 2017-02-17 21:18:23 · 2309 阅读 · 0 评论 -
extern和static的理解
extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。我们要在文件1中定义了一个变量,而在文件2中需要用到,这该怎么办?只需要在使用时在变量前面加上extern即可,提示编译器这是从另一个文件中分拿出来的变量。不过这里需要注意一点,这里的变量只能声明,不能给他初始化。//file1.c#include <stdio.h>in原创 2017-02-18 11:21:21 · 332 阅读 · 0 评论 -
c/c++测试函数的运行时间(八种方法)(转)
目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但是各种计时函数的精度不一样.下面对各种计时函数,做些简单记录.void foo(){ long i; for (i=0;i<100000000;i++) { l转载 2017-02-22 20:04:32 · 31178 阅读 · 2 评论 -
详~谈~继承
说到继承,我们会想到子承父业,其实c++中的继承和这个词差不多,如果有两个类,(记作:一个是父类,一个是子类,)那么子类就可以继承父类的所有成员变量,以及函数等。继承的概念:是面向对象设计代码,可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展和增进功能。这样产生的新类成为派生类。 继承的格式:class DeriveClassName:继承类型 BaseClassName下原创 2017-02-23 22:42:52 · 484 阅读 · 1 评论 -
浅拷贝、深拷贝(普、简)、写时拷贝
拷贝:这是 一个简单的名词,就是将右手的东西放到左手,c中有一个函数,strcpy,c++中也有拷贝。但是你想过拷贝会出现的问题吗?下面我们来探讨一下:浅拷贝出现的问题:…… 解决方案:深拷贝、写时拷贝先来看一个例子://class String//{//public:// String(const char* pStr = "")// :size(strlen(pStr) +原创 2017-03-04 22:25:36 · 356 阅读 · 0 评论 -
C++四大特性——多态 的总结
我们都知道,C语言和C++的区别就是,C语言是面对过程的程序设计,而C++是面对对象的程序设计。面对对象的程序设计有4大特性:分别是,抽象、封装、继承、多态。今天我们就来总结一下多态的内容。多态:分为静态多态和动态多态:静态多态:编译器在编译期间完成的,编译器会根据实参类型来推断该调用哪个函数,如果有对应的函数,就调用,没有则在编译时报错。比如一个简单的加法函数:include<iostream>原创 2017-03-11 15:26:49 · 17064 阅读 · 5 评论 -
我的第一万天是多少?(日期计算器)
当我们回想往事时会不会感叹时间流逝,往事如烟,暮然回首,物是人非……额……不扯了,现在进入主题,当别人问你多大的时候,你总是会说:我22了!然后别人会说,都奔三了,结婚了没有啊,难道你会在回一句,我连女朋友都没有……过。真是悲催呀!额……又扯远了。好了,为了避免尴尬,别人问你多大的时候,你可以跟他说,我已经七千多天了,哈哈哈。那么这个换算是如何进行的呢?接下来我来告诉你:#include<iostr原创 2017-03-23 17:39:38 · 29746 阅读 · 0 评论 -
模板
我们在学习函数的时候,曾经说过,当一个问题或者功能在一个文件中多次被使用的时候,我们可以将其封装成函数的形式,这样我们就能在再一次使用的时候直接调用。那么今天也有一个相同的问题,我们要想写一个相同功能的函数,但是其参数类型和返回值类型不同呢?比如:我么想要写一个加法的函数,但是,不仅仅适用于整型,还要能进行浮点型的运算,那么我们该如何操作呢?当然最简单直接的方法就是将其都写出来,用的时候在调用:in原创 2017-03-14 22:30:15 · 483 阅读 · 1 评论 -
【牛客】最小的k个数
使用topK的方法,如果不想写堆的话,了解几个库里的堆的函数std::make_heap将[start, end)范围进行堆排序,默认使用less, 即最大元素放在第一个。 std::pop_heap将front(即第一个最大元素)移动到end的前部,同时将剩下的元素重新构造成(堆排序)一个新的heap。 std::push_heap对刚插入的(尾部)元素做堆排序。 std::sort_hea原创 2017-08-30 18:20:06 · 482 阅读 · 0 评论