vector的详细讲解
1.vector的介绍及使用 1.1 vector的介绍 1. vector 是表示可变大小数组的序列容器。 2. 就像数组一样, vector 也采用的连续存储空间来存储元素。也就是意味着可以采用下标对 vector 的元素 进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自 动处理。 3. 本质讲, vector 使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小 为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是 一个相对代价高的任务,因为每当一个新的元素加入到容器的时候,vector 并不会每次都重新分配大 小。 4. vector 分配空间策略: vector 会分配一些额外的空间以适应可能的增长,因为存储空间比实际需要的存 储空间更大。不同的库采用不同的策略权衡空间的使用和重新分配。但是无论如何,重新分配都应该是 对数增长的间隔大小,以至于在末尾插入一个元素的时候是在常数时间的复杂度完成的。 5. 因此, vector...
【机器学习】决策树(Decision Tree)
引入 决策树是一类预测模型,它代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表某个可能的属性值,而每个叶节点则对应从根节点到该叶节点所经历的路径所表示的对象的值。 关于分类问题 这里主要考虑决策树基于分类问题的处理算法,分类问题和回归问题有个简单的判别方式:分类的目标属性是离散的,而回归的目标属性是连续的。 分类问题的步骤 1、模型构建:通过对训练集合的归纳,利用归纳算法生成可读的规则,建立分类模型。 2、预测推论:根据规则和建立的分类模型,对测试集合进行测试,并处理新的数据。 ...
C++动态分配内存知识点!
1.动态分配内存的思想 动态分配内存是指在程序运行时根据需要动态地分配内存空间。这相对于静态分配内存来说,静态分配内存是在编译时固定地分配内存空间,而动态分配内存可以在程序运行期间根据实际需求进行内存的申请和释放,以提高内存的利用率和灵活性。 2.动态分配内存的概念 动态分配内存的概念包括以下几个方面: 2.1内存分配函数 动态分配内存需要使用内存分配函数,如C语言中的malloc()、calloc()、realloc()等,这些函数可以根据需要在运行时动态地分配一块连续的内存空间。 2.2动态内存的申请和释放 使用内存分配函数可以申请一块指定大小的内存空间,申请的内存空间可以在程序运行期间使用。使用完毕后,可以使用释放函数将内存空间释放,以便其他程序继续使用。 2.3内存碎片问题 动态分配内存可能会导致内存碎片问题。当频繁地进行内存分配和释放操作时,可能会在内存中留下一些未被使用的小块内存,这些小块内存无法被再次利用,导致内存的浪费。为了解决内存碎片问题,可以使用内存管理算法来进行内存的分配和释放操作。 ...
C++之红黑树认识与实现
一.红黑树的概念 红⿊树是⼀棵⼆叉搜索树,他的每个结点增加⼀个存储位来表⽰结点的颜⾊,可以是红⾊或者⿊⾊。通过对任何⼀条从根到叶⼦的路径上各个结点的颜⾊进⾏约束,红⿊树确保没有⼀条路径会⽐其他路径⻓出2倍,因⽽是接近平衡的。 红黑树的结构 123456789101112131415161718192021222324252627282930313233343536// 枚举值表⽰颜⾊ enum Colour{ RED, BLACK};template<class K, class V>struct RBTreeNode{ // 这⾥更新控制平衡也要加⼊parent指针 pair<K, V> _kv; RBTreeNode<K, V>* _left; RBTreeNode<K, V>* _right; RBTreeNode<K, V>* _parent; Colour _col; RBTreeNode(const pair<K, V>& kv) :_kv(kv) ,...
高效工作法则:学会思考,掌握五大管理工具
在职场中,如何不断提升自己的效率、优化工作流程,是每位职业人都会面对的问题。本文聚焦于几种经典的管理方法论,如PDCA循环、RACI模型、RCA法则、SWOT分析、SMART目标等,帮助你掌握从计划到执行、从分析到反馈的系统化思维模式。无论你是新晋职场小白,还是希望进一步精进技能的管理者,这些工具都能为你的日常工作提供有效指导,助你在不断思考和改进中迈向更高效的职场表现。让我们从了解这些方法开始,探索如何在工作中活学活用,真正做到在思考中成长,在应用中进步。 一、PDCA循环 (戴明循环) ...
CentOS 系统、数据库、网络面试知识点总结
Linux CentOS 面试知识点整理 一、Linux 基础命令 (一)文件和目录操作 命令 功能 常用选项 示例 ls 列出目录内容 -l(长格式)、-a(显示隐藏文件)、-h(易读格式) ls -lh cd 切换目录 无 cd /etc pwd 显示当前工作目录 无 pwd mkdir 创建目录 -p(递归创建) mkdir -p dir1/dir2/dir3 rm 删除文件或目录 -r(递归删除)、-f(强制删除) rm -rf file.txt cp 复制文件或目录 -r(递归复制) cp -r file1 file2 mv 移动或重命名文件或目录 无 mv file1 /dir 面试知识点补充: 批量删除特定文件类型:在实际工作中,可能需要批量删除某个目录下的特定文件类型。例如,删除所有.log文件,可以使用rm -f *.log。面试中可能会问到如何删除多个目录下的特定文件类型,可以使用find命令结合rm命令,例如find /path/to/directory -type f -name...
蒙特卡洛算法(C++)
蒙特卡洛算法是一个基于几何概率模型的近似估计真实值的方法,可以近似估计出圆周率π和一些被积函数比较复杂不容易求出积分的积分值。 近似估计出圆周率π举例: 假设在正方形内投掷随机点数量为N(N∈N*),则按几何概率,当N很大时,落在圆中数量为n(n∈N*), 而N与n的比值等价于两者的面积比,即: πr²/4r²= n/N => π = 4n/N C++代码实现: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859#include <iostream>#include <random>#include <cmath> const double r = 2; double Random(int min, int max); class location {public: double x, y; location(double x, double y)...
蒙特罗卡π算法(C++语言描述)
圆的面积计算公式为:S=π*r*r 将圆放到一个直角坐标系中,如图黄色部分的面积是S/4=(π*r*r)/4;如果我们将取一个单位圆,则S/4=π/4. 因为是单位圆,半径为1,所以图中红色正方形的面积为1。 那么如果向正方形内均匀的撒点,那么落入阴影部分的点数与全部的点数之比应该是: S阴影/S正方形=π/4.==============》π=4*S阴影/S正方形 根据概率统计的规律,只要撒的点足够多,那么将得到近似的结果。 使用蒙特卡罗算法计算圆周率有如下两个关键点: 均匀撒点:通过rand函数残生[0,1]之间随即的坐标值[x,y] 区域判断:图中黄色部分的特点是距离坐标原点的距离小于等于1,这样,可以通过计算判断x2+y2<=1来实现。 C++语言代码: 123456789101112131415161718192021222324252627282930313233#include<iostream>#include<ctime>#define s_rand() double(1.0*rand()/RAND_MAX)using...
Qt WebAssembly实验记录
1.安装及介绍 【Qt杂谈2.快速体验Qt for WebAssembly(Windows平台)】 【qt for webassembly环境搭建图文教程】 2.问题及解决方案 2.1.在C++中调用js函数 关于在wasm编译环境中,在c++中调用js,可以参考以下网址: 【emscripten.h】 【asm.js 和 Emscripten 入门教程】 【EM_JS : unable to free const char* in cpp】 2.2.中文无法显示(乱码): 【Qt for WebAssembly中文显示异常】 弄一个otf或者ttf字体文件,然后加到资源库中,然后 12//注意选择你自己的文件QFontDatabase::addApplicationFont(":/qml/Font/Alibaba-PuHuiTi-Light.otf"); 2.3.无法输入中文 好像没有有效的资料解决这个问题,所以我只能调用html的api了。(Qt6.8能够输入中文了,请看这篇文章的最后讨论【Unable to input Chinese...
Qt6.6搭建WebAssembly
1.首先安装python , 链接: https://www.python.org/ 2.下载并安装qt6. 3.克隆emsdk工程 3.1 进入emsdk目录,然后更新emsdk代码 3.2 下载并安装最新的SDK工具。(C:\Qt\emsdk>emsdk install --global latest) 3.3 激活:(C:\Qt\emsdk>emsdk activate latest) 3.4配置环境变量(C:\Qt\emsdk>emsdk_env.bat) 3.5检查是否成功:(C:\Qt\emsdk>em++ --version) 4.以上步骤如果不出错的话,打开qtcreator就可以看到该环境配置好了。 5.发布一个应用来看下吧













