![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
归纳总结
一天开始了
往前看
展开
-
哈希表的简单实现
在学习数据结构时,看到了有关哈希表的使用,虽然STL模板库里已有相关的实现,但我想简单实现下它的功能。哈希表可以通过哈希函数来存储和查找值,这里我使用了较为简单的哈希函数,大大增加了其冲突的概率,我对冲突的处理使用的是链地址法。虽然我使用了模板,但其实只限于 对int类型的处理,这跟我的哈希函数有关,往后我会改进,先写个简陋的版本。#include <iostream>template<typename T=int>class Hash{ enum state原创 2022-02-27 20:58:51 · 306 阅读 · 0 评论 -
线程池_理论
简单复习下线程池的原理,为接下来线程池的实现做准备。1.概念1.什么是线程池? 线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。例如,假设你有需要处理的十个任务,将这些任务加入到任务队列中。线程池中有预先创建的5个线程。这5个线程通过竞争在任务队列中获得任务去完成。2.为什么使用线程? 1).降低资源消耗。通过重复利用已创建的线程,降低线程创建和销毁造成的消耗。 2).提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行原创 2022-02-17 19:37:24 · 174 阅读 · 0 评论 -
Linux下线程的使用(二)
昨天稍微讲了下线程的使用,今天把昨天的内容稍微扩展一下。明天将写一个独自封装的线程池。1.pthread_join()int pthread_join (pthread_t thread, void** retval);线程等待函数,等待thread线程结束,成功返回0,失败返回错误吗。1.thread 是所等待的线程2.retval 用于接收线程的返回值,如果没有返回值置为NULL。#include <stdio.h>#include <unistd.h>#in原创 2022-02-16 18:27:40 · 840 阅读 · 0 评论 -
Linux中线程的使用(POSIX线程库)
1.概念1.什么是线程? 线程是程序的执行路线,而进程是运行中的程序,通俗讲,线程就是进程的子任务,一个进程可以有多个子任务,即可以拥有多个线程。2.线程的特点: 1).不拥有自己独立的内存资源,共享进程的代码区、数据区、堆区(注意没有栈区)、 环境变量和命令行参数、文件描述符、信号处理函数、当前目录、用户ID和 组ID等资源. 2).线程拥有自己独立的栈,因此也有自己独立的局部变量. 3).线程的系统开销小,任务切换快,相对于进程来说。2.线程函数1.pthread_create(原创 2022-02-15 19:23:01 · 1294 阅读 · 0 评论 -
简单畅谈——进程
今天的内容依然是对我之前内容的理解,大家想看详细的进程,可以去浏览我之前的文章。1.概念1.什么是进程? 进程就是运行中的程序。 进程一般分为交互进程、批处理进程和守护进程三类。 同时,根据进程间的关系分为子进程和父进程。根据父子进程的运行状态又可以有 孤儿进程和僵尸进程。(这里涉及到资源回收的问题, 大家注意孤儿进程是会被收养的,其资源可以被回收,而僵尸进程,由于子进程先接受,父进程无法回收其资源) 进程资源是有限的,如果不回收进程资源,则会浪费资源,使得其他进程的开辟产生问原创 2022-02-14 21:29:08 · 188 阅读 · 0 评论 -
文件系统(下)
今天写的东西,在我很早之前就写过了。我就简单写段代码来讲解,巩固一下知识。1.lseekoff_t lseek(int fd,off_t mov,int pos);fd : 为文件描述符mov : 为文件的偏移位置 正为向后操作,负为向前操作该函数成功返回当前位置,其实就是返回pos : 文件开始操作的位置 SEEK_SET //起始 SEEK_CUR //当前 SEEK_END //末尾文件操作时,其文件位置会自动发生偏移。#include <stdio.h>原创 2022-02-13 21:49:20 · 72 阅读 · 0 评论 -
虚函数表
文章为转发,博主,写得不错,希望有更多的人看到.https://blog.csdn.net/haoel/article/details/1948051?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163229082716780265422047%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=16322908271678026542转载 2021-09-22 14:24:52 · 55 阅读 · 0 评论 -
C++ 面向对象三大特征总结(详解)
1.面向对象的三大特征1).封装 封装:将一个对象的全部的属性变量和行为方法进行包装(集中到一个类中,), 并用权限对其成员属性和成员方法加以限制,使得外部对其访问时,不能随意改变该包装.#include <iostream>using namespace std;class Shape{private: int x;//重心的横坐标 int y;//重心的纵坐标public : Shape(int x = 0,int y =0):x(x),y(原创 2021-09-20 13:48:38 · 1374 阅读 · 0 评论 -
C++_引用和指针的区别
最近做刷题时遇到了许多有关引用的问题,发现只会用,而没有好好总结其用法,今天,我大概总结了一些用法.如有不足,希望大家多多帮助.1.引用和指针 指针:即内存地址,一个指针变量,存储的是所指向对象的内存地址,所以所谓指针变量最终还是一个变量,不同于原来的对象. 引用:引用是对同一个对象变量取了一个别名,我们可以通过不同的名字去调用它.所以引用的对象没有发生改变.2.两者区别 指针:我们都知道存在空指针,即指针里存储的地址为空,没有指向的对象. 1.type* :声明为tyep类型的指针原创 2021-09-19 14:31:50 · 228 阅读 · 0 评论 -
顺序容器_deque
1.双端队列dequedeque 的存储按需自动扩展及收缩。扩张 deque 比扩张 std::vector 更优,因为它不涉及到复制既存元素到新内存位置。另一方面, deque 典型地拥有较大的最小内存开销2.用法详解#include <iostream>#include <deque>#include <vector>using namespace std;//函数模板template<typename T>void print(原创 2021-09-12 14:56:54 · 72 阅读 · 0 评论 -
array的相关用法
1.array头文件:#include <array> array和vector容器类似,用法类似,但vector功能更加强大,array容器是一个静态的容器,则意味他的容器大小,在初始化是就已经固定好了其大小.而vector动态容器其容量大小可能跟则操作发生改变,例如使用insert()插入一个元素时,而array容器固定,如果使用insert()方法,每次调用前还得判断是否元素个数是否溢出,就十分不方便,所以array就没有一些影响容量大小的常用方法.2.常见用法#includ原创 2021-09-11 11:46:09 · 571 阅读 · 0 评论 -
vector的用法详解
1.vector什么是vector呢? 让我简单的介绍一下它的特点.1.它是一个容器,所谓容器也就是能够存储东西的器具,而在C++中它相当于一个动态的连续数组,能够存储各种类型的数据,它是一个顺序容器.2.在底层中是一个类模板.能够实现许多非常强大的功能.2.vector相关用法我大概整理了它的常见用法,#include <iostream>#include <vector>using namespace std;int main(){ //vect原创 2021-09-11 10:16:15 · 363 阅读 · 0 评论 -
函数模板 和 模板函数
有许多函数的功能相似,只是变量的类型不同,在语言中,处理这种问题,我们往往只能用void*来处理,但常常又会在数据转换时发生问题.在c++中函数模板就很好的替我们解决了这个问题.template< typename T> 模板<未知变量类型 T>#include <iostream>#include <typeinfo>#include <cstring>using namespace std;class A{};/*temp原创 2021-09-09 22:46:12 · 114 阅读 · 0 评论 -
线程的相关知识_day03
这是我最后一天分享线程的相关知识,冲冲冲O(∩_∩)O1.线程共享资源的访问当多个线程同时访问其所共享的线程资源时,需要相互协调,以防止出现数据不一致,不完整的问题,这就叫线程同步.1).互斥量...原创 2021-08-22 21:58:35 · 80 阅读 · 0 评论