插入排序,选择排序,冒泡排序 1.插入排序大白话理解原理:将第一个数看成是有序的,从第二个数开始和该数前面的数进行比较,(默认从小到大排序)如果这个数比前一个数小,那么就将这个数,放在一个临时变量中,再进行相同的操作,知道发现前一个数币这个数小就将这个数放在比他小的那个数的后面。2.选择排序选择排序就是从一组数据的第一个数开始,在数组中下标是从0开始,将第一个数的位置记录下来,在一个一个与后面的数进行比较,如果后面有比这个数还小的数,那么就将这个数的位置与之前记录的数的位置更换,一直这样比较到最后一个数,然后将这个最小的数放在排好
网络聊天室整体思路框架 思路:网络聊天室首先网络聊天需要借助网络,服务器和客户端这两个是需要我们创建的,在建立连接,通过套接口来实现客户端与服务器之间的连接。必须先实现客户机与服务器之间的连接,才可以进入下一步,不然连都连不上就更不可能聊天了。客户端与服务器的连接:首先在客户端创建套接口,配置地址,连接等操作完成后,再在服务器端进行同样的操作,创建监听套接口,绑定套接口,监听,接收客户连接连接,返回连接套接口。创捷线程。当客户机与服务器连接之后进行通信实验看看,能不能通信,在进行后面的登录注册操作。首先是注册功能,注册
C语言,C++练习笔记 函数调用:返回值存在寄存器中,没有地址,不能作为形参,但可以作为实参。一个函数没有返回值时,是void型,此时的void关键字不能省略(不写);一个函数省略(不写)返回值类型时,默认是int型;int main() {int a[3][3], *p, i;p = &a[0][0];for(i = 0; i < 9; i++) p[i] = i;for(i = 0; i < 3; i++) printf("%d ", a[1][i]);}指针的步长与指针的类型相关,由于p
C++基础知识八 一、算法通用的算法,算法主要头文件 : 常用的功能涉及,比较,交换,查找,遍历操作,复制,修改,反转,排序,合并。 :加法和乘法在序列上的一些操作。:定义一些模板类,用以声明函数对象。1.1 遍历算法#include <iostream>#include <algorithm>#include <vector>using namespace std;void show(int x){ cout<<x<<endl;
C++基础知识七 一、STLlist是一个双向链表容器,可以高效的进行插入和删除。list不可以随机存取元素,所以不支持at()和[]操作符。#include <iostream>#include <list>#include <cstring>using namespace std;class Student{ private: int id; char name[32]; public: Student(
C++基础知识六 一、文件操作1.1 I/O 流概念和流类库的概念程序输入输出输入:应用程序将数据导出的操作输出:从外部获取数据到程序内部的操作C++输入和输出分为三类1、对系统指定的标准设备的输入和输出, 即标准I/O2、以外存磁盘文件为对象进行的输入和输出,即文件I/O3、...
C++中派生类对基类成员的三种访问规则 C++中派生类对基类成员的访问形式有两种:1.内部访问:派生类新增成员对从基类继承过来成员进行访问2.对象访问:在派生类外部,通过派生类对象对从基类继承过来的成员进行访问下面看看派生类对基类的成员的访问规则:1.派生类私有继承了基类规则(private)当类的继承方式是私有继承(private)时,基类中的public和protected成员被继承后称为派生类的私有成员,派生类的成员可以直接访问他们,但是在类的外部,通过派生类的对象是不可以对其进行访问的。还有基类中的私有成员在派生类中是不可以直接
C++基础知识五 一、智能指针智能指针的行为类似常规指针,重要的区别是它负责自动释放所指向的对象。标准库提供的两种智能指针的区别在于管理底层指针的方法不同,shared_ptr允许多个指针指向同一个对象,unique_ptr则“独占”所指向的对象。标准库还定义了一种名为weak_ptr的伴随类,它是一种弱引用,指向shared_ptr所管理的对象,这三种智能指针都定义在memory头文件中。#include <iostream>#include <memory>using namespace
C++基础知识四 一、多态1.1 概念:在基类指针指向基类对象的时候,就是使用基类的方法和属性,基类指针指向派生类对象的时候,就使用派生类对象和属性,产生条件:1)要有继承 2)要有虚函数重写(发生在不同作用域中,函数原型相同) 3)基类指针指向派生类对象#include <iostream>using namespace std;class Parent{ public: virtual void show() //这里要变成虚函数 {
运算符重载 一、运算符重载介绍:1.运算符重载允许把标准运算符(如 +,- ,*,/, <, >等)应用于自定义数据类型的对象2.运算符重载的作用:1) 直观自然,提高程序的可读性2)体现C++的可扩展性3)运算符重载仅仅是语法上的方便,他是另一种函数调用方式4)运算符重载本质上是函数的重载3.运算符重载注意事项不可滥用重载,因为只是语法上方便,所以只有涉及的代码更容易写更容易读时才有必要重载二、运算符重载的实现方式:1.成员函数重载2.友元函数重载三、运算符重载规则1.运算符
C++的继承,封装,多态 C++是面向对象的语言,因此他和JAVA一样有面向对象语言的三大基本特征:封装,继承,多态。封装:封装字面意思就是打包,包装起来,看不见里面是啥。稍微专业点就是指按照信息屏蔽的原则,把对象的属性和操作结合在一起,构成一个独立的对象,通过限制属性和操作的访问权限(public, protected,private),可以将属性“隐藏”在对象的内部,那都隐藏了外面就不好操作了,放心,这里会提供一定的接口,在对象之外只能通过这个接口对对象进行操作。就像开车给你钥匙,你会开车就能把车开走,具体车里面的发动机啥的不
C++基础知识三 一、构造函数的参数初始化列表注意:1.初始化参数列表优先于当前对象的构造函数执行2.子对象的初始化顺序和在其初始化列表的排序无关,但是和在类中的声明顺序有关,先声明的先初始化#include <iostream>using namespace std;class Date{ private: int m_year; int m_month; int m_day; public: Date(int y,