Klizzz's blog

排序算法

[TOC] 各种算法的比较 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:1 快速排序 快速排序由东尼·霍尔在1960年提出。它的基本思想是“分治法”(Divide and Conquer)。 快速排序的平均时间复杂度为 $O(n \log_2 n)$,在最坏的情况下(例如,当输入数组已经是正序或逆序时)时间...

Mt与md

mt与md格式的区别 mt mt的dll对于编程格式是更严格的,就比如说mt库是不允许类导出的(这里指的是纯类导出,而非纯虚类)。 此外,Windows系统中能同时加载的mt的dll个数也是有限制的,在Win10的某个系统前,是限制为仅能加载100多个,超出此限制后,若还有其他程序需要加载dll,就会提示加载失败,这也就是PKPM结构软件中1114问题的由来。 md md的dll则没有...

智能指针

[TOC] 1 什么是智能指针 C++ 没有垃圾回收机制,需要程序员自己释放和分配内存,否则就会照成内存泄漏。 智能指针是指向动态对象的指针,当其应该被释放时,智能指针可以确保自动释放内存,不需要手动释放,避免内存泄漏问题,更加容易也更加安全地使用动态内存。 智能指针的本质是类模版,当智能指针所指向的对象使用完后,对象会自动调用析构函数去释放指针所指向的空间。 以下是智能指针基本框...

左值与右值

[TOC] 1. 左值与右值 在C++中,左值(lvalue)和右值(rvalue)是表达式的两种基本类别,它们区分了表达式的不同属性,特别是它们的身份和存储期。 左值和右值的区别不仅仅是语法上的,它们也影响代码的语义,尤其是在涉及到重载操作符、移动语义和完美转发时。 C++11引入了右值引用(用&&表示),它允许开发者区分一个对象是可以安全地“移动”(即可以从中窃取...

多线程

[TOC] 1. 基本概念 1.2 进程和线程 进程和线程都是操作系统中的基本概念,它们在多任务操作系统中用于程序的执行和系统资源管理。1 进程是资源分配的单位,线程是执行流的最小单位,它们是现代操作系统中实现并行和并发的基础。 进程(Process): 进程是操作系统进行资源分配和调度的基本单位。 它是一个程序的运行实例,拥有独立的地址空间...