【c/c++】
文章平均质量分 82
Bruce-XIAO
这个作者很懒,什么都没留下…
展开
-
C++push_back、emplace_back、emplace性能对比
push_back, emplace_back, emplace都是往容器中添加一个元素,后两者是c++11新加的,它们三者的区别在于,push_back添加元素,需要先调用被添加元素的构造函数,再调用移动构造函数。而emplace_back和emplace_back只需要调用一次构造函数, 举个例子。1作为实参传入push_back时,需要先构造一个整数对象1,然后调用移动构造函数将对象1存入vec中,调用了两次构造函数;而emplce和emplace_back直接将构造的对象存入vec中。原创 2023-09-30 10:36:28 · 489 阅读 · 0 评论 -
c++ 优先级队列priority_queue的使用
priority_queue原创 2023-01-22 11:10:21 · 2038 阅读 · 0 评论 -
记一次c++面试
记一次c++面试,及时记录补充1、const限定符的使用const修饰类的成员变量,该变量的作用域属于该类,且不发生变化;const修饰函数的参数,表示在函数内不会对该变量进行修改;const修饰函数,表示该函数是常函数(只读函数),不能对成员变量进行修改;const用来修饰变量,表示不希望修改变量的值,该变量为常量,类似#define,#define定义的是全局宏;const修饰的变量必须初始化:const int a; //错误const int a=10;//正确//const 变量的原创 2021-03-31 11:25:57 · 217 阅读 · 0 评论 -
c语言指针回顾
指针的本质是地址,本文简要回顾了指针分别指向变量或数组、指向函数、以及做返回值的情况#include<stdio.h>void sort(int *p,int n);int fun_c(int *c[10],void *p(int *arr,int n));int main(){ int n = 7; int arr[] = {4,1,3,2,5,6,0}; sort(arr,n); for(int i=0; i<n;i++){ printf("%d ",arr[原创 2020-12-28 19:30:36 · 179 阅读 · 0 评论 -
字符串快速排序
很久没写c语言代码了,回顾一下,写了基于快速排序的字符串排序。c语言定义二维 数组的方式:char s[10][20]; 正常的数组char *s[20]; 指针数组,需要逐一申请空间,s[i] = malloc(…),s[i]指向的是一个地址快速排序思想:选择基准p,i<j,从左边找一个s[i]>p,从右边找一个s[j]<p,交换s[i],s[j];基准与此时的s[i]交换;此时,中间的值已经排好序,对两边进行递归快速排序,直到排序结束,即i>=j#inclu原创 2020-12-27 20:51:43 · 1612 阅读 · 2 评论 -
链表公共元素
原题:给定两个降序链表,找出其公共元素样例输入:6,5,4,3,2,16,5,3,2,1样例输出:6,5,3,2,1思路:分别定义两个指针i,j指向表头,逐一比较,留下相同的元素#include<stdio.h>#include <string.h>#define N 100int *find_common_sequence(int a[],int b[],int m,int n){ int p=0,q=0,cnt=0; if(m==0 || n==0){原创 2020-12-27 20:42:43 · 353 阅读 · 0 评论 -
生产者与消费者之苹果橘子问题
生产者与消费者问题【问题】桌上有一空盘,允许存放一只水果。爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步。分析 在本题中,爸爸、儿子、女儿共用一个盘子,盘中一次只能放一个水果。当盘子为空时,爸爸可将一个水果放入果盘中。若放入果盘中的是桔子,则允许儿子吃,女儿原创 2017-06-11 18:33:48 · 11533 阅读 · 3 评论 -
CList模板链表
CList模板类.STL为我们提供了各种容器,像vector、list、stack、deque、array、map,其模板的泛型化更是极大地方便了程序的编写过程。以STL中的list为例,它为我们提供了许多操作,如下图:其中包括我们经常要使用的一些链表方法能像push_back、push_front 、insert、remove、size、reverse等。下面代码为 CL原创 2017-07-11 12:29:15 · 630 阅读 · 0 评论 -
链表的实现(C++)
链表的实现(C++)动态内存分配应用举例(链表) 我们知道,数组式计算机根据事先定义好的数组类型与长度自动为其分配一连续的存储单元,相同数组的位置和距离都是固定的,也就是说,任何一个数组元素的地址都可一个简单的公式计算出来,因此这种结构可以有效的对数组元素进行随机访问。但若对数组元素进行插入和删除操作,则会引起大量数据的移动,从而使简单的数据处理变得非常复杂,低效。 为转载 2016-05-26 11:24:06 · 449 阅读 · 0 评论 -
构造函数和析构函数
c++语言之前有学过一些,很久时间没用语法忘得差不多了,我准备重拾c++,,尽管现在还带有不少c的风格,但写博客是为了备忘,也给日后的学习做一个参考,以链表为例,运用c++中的构造函数对链表进行初始化,析构函数来销毁链表,特别是在对象很多的时候,比如要定义多个链表对象,c++相比c就有了很大优越性。#include<iostream>using namespace std;typedef int原创 2016-11-20 17:13:24 · 613 阅读 · 0 评论 -
static关键字的用法
c语言中static关键字有两种用法 1、修饰局部变量 a)地址在全局区, b)只有第一次进入函数时初始化; c)生命期在离开main函数之后结束; d)每次进入函数时不重新初始化,保留进入函数之前的数值。2、修饰全局变量,避免文件间相同变量名冲突 a)普通全局变量可以跨文件用extern关键字来引用; b)static全局变量不可以用extern关键字来跨文件调用; c)加了sta原创 2017-01-24 11:29:37 · 583 阅读 · 0 评论 -
复数类-简单的运算符重载
运算符重载可以使一些现有的运算符实现一些特定的功能。 运算符重载函数的基本格式: 函数类型 operator@(参数列表) //@代表要重载的运算符常见的单目运算符:++、–、!、~(按位取反)、-(负号)、*、&(取址)、sizeof等常见的双目运算符:+、-、*、/、%(取余)、<、>、>=、<=、==、!=、<<、>>、&(按位与)、|(按位或)、&&、||、=等。原创 2017-01-28 18:39:25 · 773 阅读 · 0 评论 -
链表-结点间交换
利用第三个变量实现交换,冒泡法进行排序。原创 2016-05-19 10:45:37 · 1237 阅读 · 0 评论 -
统计字符串中各个字符出现的次数
#include<stdio.h>#include<string.h>int main(){ void numchar(char *s); char s[100]; printf("please enter a string:\n"); scanf("%s",s); numchar(s); return 0;} void numchar(char *s){in原创 2016-11-18 21:06:36 · 1338 阅读 · 0 评论 -
在windows下使用gcc+gdb编译和调试程序
在图形用户界面日益发达的今天,已经有越来越多的人不知道命令行为何物了。特别是在Linux操作系统下,gcc和gdb的运用显得尤为重要。在Dos窗口下操作,不仅可以看起来很“酷”很专业,而且确实能帮我们很大的忙。下面简单介绍mingw下的gcc的使用。 首先,确保你的电脑内安装了gcc和gdb这两个软件,可以到开始框进行搜索,一般来说,安装了c++编译都会自带这两个部分。 这里使用的是Dev原创 2017-01-13 21:05:42 · 6644 阅读 · 1 评论 -
Dev-C++中使用EGE图形库
以前一直使用VC++6.0进行编写,最近因为需要做一些简单的C语言教学,原来想使用Win-Tc来进行练习的,结果自己的电脑已经升级到了Windows 10,用不了了。就找到了Dev-C++这个集中开发环境,总体来是的确非常适合初学者。简洁用好,就是没有代码自动提示比较遗憾一些。在使用Dev-C++后,在网上找到了一个EGE的图形库,感觉不错,就尝试着加入到Dev-C++的环境中。总转载 2016-12-31 12:38:12 · 6939 阅读 · 0 评论 -
C++继承(二)
既然继承允许派生类访问基础类的成员,那么,也存在派生类和基类之间的相互转换。派生类到基类的转换:派生类对象也是基类对象,这意味着使用到基类的地方都可以用派生类来转换(派生类的范围比基类大)。又称**向上转型**(upcasting),这是一种安全的转型。当派生类以public方式继承基类时,编译器可自动执行转换。 1. 派生类对象指针自动转换为基类对象指针 2. 派生类对象引用自动转换原创 2017-02-19 19:40:10 · 425 阅读 · 0 评论 -
虚函数与继承
学生类,派生出文科生类和理科生类,它们继承了学生类的一些基本信息如姓名、学号、性别,又有着自身的成员,比如说文科类有政治、历史地理科目、理科类有化学、物理、生物科目。在录入学生信息时既要录入他们的基本信息,又要录入他们各科的成绩,所以就派生出文科类和理科类,同时对派生出来的类中的一些函数进行覆盖#include<iostream>#include<list>using namespace std原创 2017-03-05 17:46:26 · 396 阅读 · 0 评论 -
C++继承(一)
继承相关概念:继承(inheritance)是c++的一个重要特征,使用继承,可以定义相似的类型并对其相似关系建模。通过继承联系在一起的类构成一种层次关系。通常在层次关系的根部有一个**基类**(base class),其他类则直接或间接地从基类中继承而来,这些继承得到的类称为**派生类**(derived class)。基类负责定义在层次关系中所有类共同拥有的成员,而每个派生类定义各自特有的成员原创 2017-02-12 23:34:47 · 595 阅读 · 0 评论 -
C++中的单例模式
原文转载自:http://blog.csdn.net/hackbuteer1/article/details/7460019单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能转载 2017-02-08 21:07:21 · 429 阅读 · 0 评论 -
c语言写的简易ATM取款机
#include#include#include #include#includechar ch[7]={"123456"};int menu();int login();int deposit();int GetCash();int Transf();void Checkmoney();int checkPass();void modiPass原创 2016-06-04 18:20:51 · 8804 阅读 · 5 评论