C语言+C++
c和C++学习
秋毫啊
这个作者很懒,什么都没留下…
展开
-
algorithm,numeric常用算法函数
常用算法: ·常用算法主要由头文件<algorthm> <functional> <numeric>组成 ·<algorithm>是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历操作、复制修改等等 ·<numeric>体积很小,只包括几个序列上面进行简单数学运算的模板函数 ·<functional>定义了一些模板类,用以声明函数对象常用遍历算法:for_each(iterator beg, iterator原创 2021-03-24 21:02:12 · 309 阅读 · 1 评论 -
函数对象(仿函数)| 谓词 | 内置仿函数
函数对象:概念: 重载安函数调用操作符的类,其对象常称为函数对象 函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质: 函数对象(仿函数)是一个类,不是一个函数。特点: 函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值 函数对象超出普通函数的概念,函数对象可以有自己的状态 函数对象可以作为参数传递...原创 2021-03-01 13:56:18 · 215 阅读 · 2 评论 -
容器知识巩固小案例-员工分组(C++)
/*案例描述: ·公司今天招聘了10个员工(ABCDEFGHI),10名员工进入公司后,需要指派员工在哪个部门工作 ·员工信息有:姓名 工资; 部门分为:策划、美术、研发 ·随机给10名员工分配部门和工资 ·通过multimap进行信息插入key(部门编号) value(员工) ·分部门显示员工信息 实现步骤: ·创建10名员工,放到vector中 ·遍历vector容器,取出每个员工,进行随机分组 ·分组后,将员工部门编号作为key,具体员工作为value,放入到multim原创 2021-02-28 21:32:48 · 146 阅读 · 0 评论 -
map/multimap容器(C++)
map/multimap容器:map基本概念: map中所有元素都是pair pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值) 所有元素都会根据元素的键值排序本质: map/multimap属于关联式容器,底层结构是二叉树实现优点: 可以根据key快速找到value值map和multimap的区别: map不容许容器中有重复key值元素 multimap允许容器中有重复的key值元素map构造函数和赋值:map<T1, T2> mp;原创 2021-02-25 23:35:36 · 139 阅读 · 1 评论 -
set/multiset容器(C++)
set/multiset容器:set基本概念: 所有元素都会在插入时自动排序本质: set/multiset属于关联式容器,底层结构是用二叉树实现。set和multiset区别: set不允许容器中有重复元素 multiset允许容器中有重复元素 set构造和赋值:set<T> st; //默认构造函数set(const set &st); //拷贝构造函数set & operator=(const set &st); //重载等原创 2021-02-24 23:25:18 · 101 阅读 · 0 评论 -
list容器(C++)
/*list的赋值和交换:assign(begin, end); //将[begin, end)区间中的数据拷贝赋值给本身assign(n, ele); //将n个elem拷贝赋值给本身list& operator=(const list &lst); //重载等号操作符 swap(lst); //将lst与本身元素互换list大小操作:size(); //返回容器中元素的个数empty(); //判断容器是否为空resize(nu原创 2021-02-23 19:24:51 · 174 阅读 · 1 评论 -
泛型编程和STL基础学习(C++)(未完待续)
一往情深深几许,深山夕照深秋雨。 泛型编程:函数模板和类模板函数模板: template<typename T> //typename也可使用class void func(T &a){}两种方式使用模板: 1、自动类型推导 func(a) 2、显式指定类型 func<int>(a)模板的目的是为了提高代码的复用性,将类型参数化注意事项: ·自动类型推导,必须推导出一致数据类型T,才可以使用 ·模板必须要确定出T的数据类型,才可以使用原创 2021-02-09 15:51:03 · 151 阅读 · 0 评论 -
stack、queue容器学习(C++)
stack容器:概念:stack是一种先进后出(First in Last out, FILO)的数据结构,它只有一个出口常用接口:构造函数:stack<T> stk; //stack采用模板实现,stack对象默认构造形式stack(const stack &stk); //拷贝构造函数赋值操作:stack & operator=(const stack &stk); //重载=操作符数据存取:push(elem); //向栈顶添原创 2021-02-09 15:44:44 · 96 阅读 · 0 评论 -
stl案例练习—评委打分(vector,deque)
#include <iostream>using namespace std;#include <string>#include <vector>#include <deque>#include <algorithm>#include <ctime>/*有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分和最低分,取平均分 ,要求使用vector、deque、string容器*///创建选手类cl原创 2021-02-08 10:19:15 · 152 阅读 · 0 评论 -
deque容器学习(C++)
deque容器: ·双端队列。可以对头端和尾部进行插入删除操作deque与vector的区别: ·vector对于头部插入删除效率低,数据量越大,效率越低 ·deque相对而言,对头部的插入删除速度比vector快 ·vector访问元素的速度会比deque快,这和两者的内部实现有关deque内部工作原理: deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据 中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间·deque容器的迭代器也是支持随机原创 2021-02-04 20:12:26 · 108 阅读 · 0 评论 -
vector容器学习(C++)
vector容器:vector构造函数:vector<T> v; //采用模板实现类实现,默认构造函数vector(v.begin(), v.end()); //将v[begin(), end())区间中的元素拷贝给本身vector(n, elem); //构造函数将n个elem拷贝给本身vector(const vector & vec); //拷贝构造函数vector赋值操作:vector & operator=(const vector &原创 2021-02-04 15:41:34 · 149 阅读 · 1 评论 -
string容器学习(c++)
string容器string容器本质: ·string是C++风格的字符串,而string本质上是一个类string和char*的区别: ·char*是一个指针 ·string是一个类,类内 不封装了char*,管理这个字符串,是一个char*型的容器。特点: string类内部封装了很多成员方法 例如:查找find,拷贝copy,删除delete,替换replace, 插入insert string 管理char* 所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责构造原创 2021-02-03 17:21:18 · 122 阅读 · 3 评论 -
数组类封装案例C++模板
/*泛型编程:函数模板和类模板函数模板:template //typename也可使用classvoid func(T &a){}两种方式使用模板:1、自动类型推导func(a)2、显式指定类型func(a)模板的目的是为了提高代码的复用性,将类型参数化注意事项:·自动类型推导,必须推导出一致数据类型T,才可以使用·模板必须要确定出T的数据类型,才可以使用普通函数和模板的区别:自动类型推导 不会发生隐式类型转换显式制定类型 会发生隐式类型转换普通函数和模板函数的调原创 2021-02-03 09:44:08 · 226 阅读 · 3 评论 -
C++模板的简易学习
泛型编程:函数模板和类模板函数模板:template //typename也可使用classvoid func(T &a){}两种方式使用模板:1、自动类型推导func(a)2、显式指定类型func(a)模板的目的是为了提高代码的复用性,将类型参数化注意事项:·自动类型推导,必须推导出一致数据类型T,才可以使用·模板必须要确定出T的数据类型,才可以使用普通函数和模板的区别:自动类型推导 不会发生隐式类型转换显式制定类型 会发生隐式类型转换普通函数和模板函数的调用规则原创 2021-02-02 09:08:34 · 113 阅读 · 1 评论 -
C++面向对象部分基础学习随笔
/*内存分区模型c++程序在执行时,将内存大方向划分为4个区域 ·代码区:存放函数体和二进制代码,由操作系统进行管理 程序运行前: 存放CPU执行的机器指令 代码区是共享的,共享的目的是对于频繁执行的程序,只需要在内中有一份代码即可。 代码区是只读的,使其只读的原因是防止程序意外地修改它的指令。 ·全局区:存放全局变量和静态变量 程序运行前: 全局变量和静态变量存放在此 全局区还包含了常量区: 字符串常量和const修饰的全局常量 该区域的数据.原创 2021-02-01 09:50:11 · 136 阅读 · 0 评论 -
实现简易通讯录--C语言\C++
使用c基础语法,编写一个简易的通讯录。主要捋顺编写程序的逻辑思维,练习结构体,数组,指针,枚举等等的运用。#include <iostream>#include <string>using namespace std;#define MAX 1000 void showMenu();void inputInfo(struct AddressBooks* abs, int index);void addPeople(struct AddressBooks* abs);原创 2021-01-07 16:38:00 · 227 阅读 · 3 评论 -
C++,C语言语法基础学习随笔
/*常量的定义方式 1、#define 宏常量 2、const 修饰的变量*//*关键字标识符命名规则 1、标识符不能是关键字 2、标识符只能由字母、数字和下划线组成 3、标识符第一个字符只能是字母或下划线 4、标识符是区分大小写的建议:给变量起名的时候,最好能见名知意*//*sizeof 关键字 语法: sizeof(数据类型/变量)*//*创建变量语法: 数据类型 变量名 = 变量初始值数据类型存在的意义: 给变量分配合适的内存空间整型short 2原创 2021-01-06 19:34:32 · 119 阅读 · 0 评论 -
寻找具有树特征无向图的最小高度树---C语言
== 一、问题来源==对于一个具有树特征的无向图,我们可选择任何一个节点作为根。图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树。给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点。该图包含n个节点,标记为0到n-1。给定数字n和一个无向边edges列表(每一个边都是一对标签)你可以假设没有重复的边会出现在edges 中。由于所有的边都是无向边,[0,1] 和[1,0]是相同的,因此不会同时出现在edges 里。示例1:输入: n=4, edges =[[1, 0原创 2021-01-06 10:04:47 · 413 阅读 · 0 评论 -
C语言实现多字符串搜索
一、问题来源用C语言编程实现在文本文件Android.log中搜索字符串,搜索“CameraService::connect”与“logicalCameraId: 5, cameraId: 5”,并打印出来包含字符串的那一行内容。字符串搜索是我们经常会遇到的问题,特别是在log中某些信息定位中起着重要作用。如何在海量的文本数据中,找到我们想要的信息,对搜索算法的速度和精度都有着较高的要求。二、算法选择字符串搜索算法有很多种,例如:KMP算法、正则匹配、暴力查找、Rabin-Karp算法、Sunday转载 2021-01-06 10:23:25 · 1104 阅读 · 0 评论 -
排序算法实现--C语言
选择排序时间/空间复杂度:O(n^2) / O(1)特点:逐个对比,简易,但是速度慢描述:选择排序的基本算法是从待排序的区间中经过选择和交换后选出最小的数值存放到 a[0] 中,再从剩余的未排序区间中经过选择和交换后选出最小的数值存放到 a[1] 中,a[1] 中的数字仅大于 a[0],依此类推,即可实现排序。/*********************************************************************************************原创 2021-01-06 10:38:42 · 119 阅读 · 0 评论