![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
文章平均质量分 67
C/CplusplusProject
Dylan、
Wubba Lubba dub dub
展开
-
时间片轮算法原理及其C++代码实现
时间片轮算法原理根据先来先服务的原则,将需要执行的所有进程按照到达时间的大小排成一个升序的序列,每次都给一个进程同样大小的时间片,在这个时间片内如果进程执行结束了,那么把进程从进程队列中删去,如果进程没有结束,那么把该进程停止然后改为等待状态,放到进程队列的尾部,直到所有的进程都已执行完毕代码如下#include<iostream>#include<fstream>#include<algorithm>#include<queue>#defi.原创 2021-10-30 15:19:14 · 1851 阅读 · 0 评论 -
C++11-shared_ptr详解
《C++11 unique_ptr》说到,如果有可能就使用unique_ptr,然后很多时候对象是需要共享的,因此shared_ptr也就会用得很多。shared_ptr允许多个指针指向同一个对象,当指向对象的最后一个shared_ptr销毁时,该对象也就会自动销毁。基本使用它的很多操作与unique_ptr类似。例如:shared_ptr<int> sp;//声明一个指向int类型的智能指针sp.reset(new int(42));auto sp1 = make_shared<原创 2021-03-08 20:20:05 · 2085 阅读 · 0 评论 -
C++11-unique_ptr详解
在《拥抱智能指针,告别内存泄露》中说到了内存泄漏问题,也提到了C++中的智能指针基本原理,今天就来说说类模板unique_ptr。在此之前,先回答读者的一个提问:C语言中该怎么办?有几点建议:编写时尽量遵循函数内申请,函数内释放的原则注意成对编写malloc和free使用静态扫描工具,如《pclint检查》使用内存检测工具,如valgrindunique_ptr一个unique_ptr独享它指向的对象。也就是说,同时只有一个unique_ptr指向同一个对象,当这个unique_ptr被销原创 2021-03-08 20:17:06 · 3863 阅读 · 1 评论 -
C++11关键字-auto
前言你以为我说的自动变量类型auto吗?当然不,我们知道C语言中其实也有auto关键字,它和早期C++中的auto关键字一样,它修饰局部变量,表示自动存储期不过由于默认就是这种,因此我们其实常常见不到这样的写法:auto int a =10;本文要介绍的并不是上面的auto,而是C++11中引入的auto关键字。效果看看下面的代码:#include<iostream>#include<vector>int main(){ std::vector<in原创 2021-03-08 20:14:33 · 1475 阅读 · 0 评论 -
C++运算符重载
前言本文要点:什么是运算符重载为什么要重载运算符哪些运算符不可以重载哪些运算符不建议重载应该遵循哪些原则如何重载运算符什么是运算符重载众所周知,运算符可直接作用于内置类型。例如,+可以用于将整型或者浮点型相加,如果是自定义的两个对象,你却不能直接进行相加,不过你可以通过重载运算符赋予这个运算符新的定义,说白了,原先的很多运算符只能作用于内置类型,通过重载就可以赋予它们更多的含义,让它们可以作用于对象。为什么要重载运算符前面也已经说了,操作符的重载可以让运算符作用于类类型的对象,而原创 2021-03-08 20:11:51 · 723 阅读 · 0 评论 -
拥抱智能指针,告别内存泄露
前言我们都知道,当申请的内存在不用时忘记释放,导致内存泄漏。长期来看,内存泄漏的危害是巨大的,它导致可用内存越来越少,甚至拖慢系统,最终进程可能被OOM(out of memory)机制杀死。C与C++中的内存泄漏在C语言中,我们用malloc申请内存,free释放内存;在C++中,也可以使用它们,不过对于自定义类型,常常会使用new申请,delete来释放。它们都有同样的问题,一旦申请了,但是忘了释放,就会造成内存泄漏,而已经释放了又仍然去访问它,则造成更加直接的严重后果。一个简单的例子://m原创 2021-03-08 20:09:20 · 192 阅读 · 0 评论 -
为什么说++i比i++效率高?
前言不知道你是否听说过++i比i++快的说法,真的如此吗?++i与i++的区别这两个表达式从我们初学编程语言的时候就会接触到。前者是自增后取值,后者是取值后自增。我们看一个简单的例子。#include <iostream>using namespace std;int main(){ int a = 0; int b = 0; int c = a++;//int tmp = a;c=a;a = a + 1 int d = ++b;//b = b +原创 2021-03-08 20:06:23 · 300 阅读 · 0 评论 -
C++ <algorithm> 中比较冷门但实用的函数
总结一下 & lt;algorithm> 头文件中的常用函数。每隔一段时间,我总能在 & lt;algorithm> 中发现一些神奇的函数,这些函数我之前基本上没有听说过,所以最近我阅读了一下 algorithm 头文件的相关文档,把那些很实用,但是之前没怎么听说过的函数简单的罗列一下。我主要阅读的文档来自 DevDocs 上的 algorithm 头文件 介绍,此外 Visual C++ 也有类似的文档供参考。常用函数void sort(RandomIt firs.原创 2021-01-26 13:03:38 · 258 阅读 · 0 评论 -
图的几类问题分析及搜索引擎的两种基本抓取策略
人工智能–搜索问题有3个传教士和3个野人来到河边准备渡河,河岸有一条船,每次最多可坐2个人。问传教士为安全起见,应如何规划摆渡方案,使得在任何时刻,在河两岸以及船上传教士人数不能少于野人人数?在每一次渡河后,都会有几种渡河方案供选择,究竟哪种方案最有利? 这就是搜索问题。分析:适用情况:难以获得求解所需的全部信息;更没有现成的算法可供求解使用。概念: 依靠经验,利用已有知识,根据问题的实际情况,不断寻找可利用知识,从而构造一条代价最小的推理路线,使问题得以解决的过程称为搜索对这类问题,一原创 2021-01-01 09:31:47 · 474 阅读 · 0 评论 -
C++中类作用域、运算符重载、vector类详解
类作用域类的成员函数/成员变量具有类作用域可以在以下场合使用类的成员:类的成员函数中类对象通过.调用类成员函数/或访问成员变量类对象指针通过->调用类成员函数/或访问成员变量通过域作用符::使用例如:class A{private: int y;public: int f(int v) { x += v; y *= v; }public: int x; static int kappa;};int A原创 2021-01-01 09:11:21 · 966 阅读 · 0 评论 -
C++面向对象之编写Rational类实现有理数的基本操作
实验要求编写一个表示有理数的类Rational。(有理数就是分数,包含分子与分母,均为整数)。要求: 定义一个命名空间Numeric,在该空间中定义类Rational; 编写默认构造函数,构造一个有理数0; 编写带参数列表的构造函数Rational (int, int ),要求使用初始化列表; 编写复制构造函数; 编写赋值操作=; 编写四个友元函数add、sub、mul、div,对两个Rational对象表示的有理数分别进行相加、相减、相乘、相除运算;(例:Rational x原创 2020-12-28 09:25:41 · 6102 阅读 · 1 评论 -
C语言实现简单贪吃蛇代码
基本构成穿墙控制死亡控制 初始化蛇(init_snake函数)移动蛇(move_snake函数)打印蛇(print_snake函数)利用for循环检测坐标对应的蛇的位置代码演示#include <stdio.h>#include <windows.h>#include <conio.h>#include <time...原创 2020-12-28 08:25:30 · 10894 阅读 · 3 评论 -
C++拟合直线与求拟合误差实验
设计思路一个平面点由两个坐标(x,y)确定,请编写一个表示平面点的类Point。要求:在默认构造函数中初始化类对象为原点(0,0); 添加一个带参数的构造函数,传入两个坐标值。 添加拷贝构造函数。 添加赋值操作函数operator=。 为类的两个成员添加getter函数和setter函数,getter函数为const函数; 平面直线的方程为ax+by+c=0 ,请设计一个类Line,表示一条平面直线。要求: 在默认构造函数中初始化直线为x轴。 添加一个带参数的构造函数,传入直线方程的三个原创 2020-12-27 23:40:11 · 3064 阅读 · 1 评论