原作者在这里!本文基于行码棋的文件进行的翻改!
[!NOTE]
相关好文推荐,这篇 STL 我也觉得非常不错!分享给你!
简单分享一下:我特别幸运地找到了一篇超适合 STL 入门和竞赛的文章!一开始只是随便翻了翻,没想到内容不仅全面详细,而且非常实用,只记得那天下午用了两个小时,从头到尾仔细的看了一遍,结果越看越上头,不靠视频也能高效、快速的学习(对当时完全没阅读习惯的我来说,简直是个奇迹)。后来的几天时间也是断断续续的在看,一周时间就可以快速上手 STL 了。相信屏幕前的你比我更快!
这篇文章最大的优点就是实用,不是那种光讲理论、没法落地的内容。在后来的刷题和深入学习的过程中,每次遇到不会的地方,我也时不时的会翻出来查,就像一本随身的 STL 字典。某些地方反复看了很多遍,每次都会有新的收获。随着不断 实践 + 回顾,相关知识越来越清晰,使用起来也越来越顺手,简直就像高中查笔记一样,真的让我受益匪浅!希望也能帮到你~
[!TIP]
实践才是检验真理的唯一标准!
1 vector1.1 介绍1.1.1 简介vector 为可变长数组(动态数组),定义的 v ...
“一周年”,我的成长蜕变与收获
今天是 2025 年 5 月 22 日,一个值得纪念的日子 —— 一年前的今天,我毅然选择报班学习,踏上了改变命运的征程。在这一年里,我经历了从迷茫到觉醒的成长蜕变,踩过无数坑后总结出血泪教训,也收获了宝贵的心得与经验。这篇文章分成三个部分展开:我的成长故事、大学避坑指南,以及成长心得分享与总结。
1. 初入象牙塔:从志愿时长 100+到迷茫的“闲鱼”生活我来到大学的日子是 2023 年 8 月 26 日,那时候真的是天真得不行,时间也多得用不完。每天就是老老实实去上课,下课后就呆在宿舍玩一玩,偶尔出去搞点志愿活动,对了,当时我加入了青年志愿者社团,短短小半年时间,志愿时长已经有 100 多小时了。有时候也会去打打球,放松一下。可是这样的生活让我渐渐觉得很乏味,也不能说是乏味吧,就觉得有点没劲,也不能完全说是没劲,就是感觉如果一直这么混下去,以后会一事无成,沦落到街头混饭吃。所以,我就萌生了做点什么事情挣点钱,当时的想法很简单,就是赚点小钱补贴生活费,顺便也为以后谋生攒点经验。
2. 搞钱初体验:从线上“搬砖”到被坑到“怀疑人生”于是,我就一头扎进了挣 ...
Linux 环境搭建全解析:从历史到实践Linux 作为开源操作系统,已经成为了当今信息技术领域的重要组成部分。无论是服务器、桌面,还是嵌入式设备,Linux 的身影几乎无处不在。那么,Linux 究竟是如何发展而来的?它又是如何在当今的技术世界中占据一席之地的?本篇博客将从 Linux 的历史背景出发,逐步讲解如何在 Linux 环境下进行开发与管理,最后提供具体的 Linux 环境搭建教程。
一、Linux 的起源与发展1.1 UNIX 的历史背景
在深入探讨 Linux 之前,我们需要了解它的前身——UNIX。UNIX 的诞生始于 1969 年,由 AT&T 贝尔实验室的 Ken Thompson 和 Dennis Ritchie 等人开发。最初,UNIX 被设计为一种多任务、多用户的操作系统,能够有效地支持科研工作。UNIX 继承了当时 Multics 操作系统的部分思想,但它的设计更加简洁和高效,这使得 UNIX 逐渐成为主流操作系统之一。
随着 UNIX 的逐步发展,不同的版本也相继诞生,包括伯克利软件发行版(BSD)和 System V。这两个版本代表了 UNIX ...
在 Linux 系统中管理用户账户:创建、设置密码及删除操作1. 创建新用户在 Linux 系统中,我们可以使用 adduser 或 useradd 命令来创建新用户。推荐使用 adduser 命令,因为它相对简单,且可以交互式地引导你完成用户创建过程。
创建新用户命令:1adduser 用户名
这里,用户名 是您自定义的用户名称。假设我们要创建一个名为 friend 的新用户,那么命令应该是:
1adduser friend
执行该命令后,系统将自动创建一个新的用户账户。具体操作步骤如下:
在 /home 目录下为该用户创建一个子目录(即 home/friend)。
配置默认的 shell(通常是 /bin/bash)。
创建该用户的相关信息文件,并将用户信息记录到 /etc/passwd 文件中。
示例输出:1[root@server]# adduser friend
执行该命令后,系统会创建新用户,并在终端中显示相关信息。
2. 为新用户设置密码在创建新用户后,我们需要为该用户设置一个密码。可以使用 passwd 命令来设置用户密码。
设置密码命令:1passwd 用户 ...
Linux
未读操作系统(OS)的基础概念操作系统是计算机硬件和软件之间的中介,它负责管理计算机硬件资源并为应用程序提供一个运行环境。简单来说,操作系统的目标是使计算机变得更好用。它使得硬件的复杂性对用户透明,提供更高效的资源管理,并使应用程序能够正常运行。
1. 操作系统的层次结构操作系统通常由多个层次构成,每一层提供不同的功能:
硬件层(硬件) 这是计算机的基础物理部分,包括 CPU、内存、硬盘、显示器、键盘等。硬件直接提供计算和存储资源。
设备驱动层 这一层负责控制和管理硬件设备,如声卡、显卡、打印机等。操作系统通过设备驱动程序与硬件进行通信,确保硬件的正常运行。
操作系统层 这一层是操作系统的核心部分,负责管理硬件资源,调度进程,提供文件管理、内存管理等基本功能。常见的操作系统包括 Windows、Linux、macOS 等。
应用软件层 最顶层是应用软件,它包括各种应用程序,如 Word、Matlab 等。用户通过这些软件与计算机互动,完成各种任务。
2. 操作系统的功能
资源管理 操作系统需要高效管理计算机的资源,如 CPU 时间、内存、磁盘存储等。它通过调度算法分配资源,确保每个进程 ...
Linux
未读Linux 软件包管理器 yum在 Linux 中,安装软件的常见方式主要有三种:源代码安装、rpm 安装和 yum 安装。它们各自有优缺点,适用于不同的场景。
安装方式
优点
缺点
源代码安装
- 高度定制化(调整编译选项、安装路径等)
- 操作复杂,需要手动执行 ./configure, make, make install 等步骤
- 软件版本灵活(能获取最新版本或特定版本)
- 依赖管理困难,需手动解决依赖关系
- 跨平台兼容性强(适配不同架构或操作系统)
- 编译过程时间长,消耗大量计算资源
- 升级和卸载困难,缺乏统一的版本管理
rpm 安装
- 安装速度快,使用预编译的二进制包
- 依赖需手动解决,可能出现“依赖地狱”
- 安装时自动检查并提示缺少的依赖项
- 版本受限于本地或下载的 RPM 包,可能无法获取最新版本
- 通过 rpm 命令可管理软件包(查询、验证、升级、卸载等)
- 默认不关联远程仓库,依赖本地或手动下载的 RPM 包
yum 安装
- 自动解决依赖关系,简化安装过程
- 需要联网访问仓库(离线环境需配 ...
shell 命令以及运行原理1. Shell 是什么?Shell 是用户与操作系统内核(Kernel)之间的“翻译官”。
你可以把操作系统内核想象成一个国家的总统(Kernel),他直接管理国家资源(CPU、内存、磁盘等)。但普通人(用户)无法直接和总统对话,必须通过一个“秘书”(Shell)来传达需求。
用户通过 Shell 输入命令(比如 ls、cd)。
Shell 将命令“翻译”成内核能理解的指令,交给内核执行。
内核处理完成后,结果再通过 Shell 返回给用户。
2. 为什么不能直接操作内核?
内核是操作系统的核心,直接操作风险极高。比如,直接让内核删除某个文件,就像让总统亲自去处理一个普通任务——虽然高效但风险极高,一旦出错可能导致系统崩溃。
Shell 的存在是为了安全和易用:
用户无需理解底层硬件细节(比如如何读写磁盘)。
Shell 通过权限控制和语法检查,避免用户误操作导致系统崩溃。
3. Shell 的“媒婆”比喻Shell 是“媒婆”,内核是“村花小花”:你想追求小花(让内核干活),但不好意思直接开口(直接操作内核)。于是你找 ...
Linux
未读写在最前一、Linux 指令的本质与执行逻辑
指令与可执行程序的关系
指令即程序:用户输入的指令(如 ls、cp)本质是 可执行程序或脚本,以文件形式存储在系统路径中(如 /bin、/usr/bin)。
位置依赖:指令执行前需在系统预设路径(由 $PATH 环境变量定义)中查找对应文件。若未找到,提示 command not found。
指令执行流程
查找与验证:系统按 $PATH 路径顺序搜索可执行文件,并检查文件权限(需具备可执行权限)。
执行过程:找到文件后,操作系统加载程序至内存运行,用户通过命令行解释器间接与内核交互。
二、核心设计哲学:Linux 下一切皆文件
抽象统一性
硬件设备抽象为文件:
显示器:通过 fwrite 写入数据(如 echo "Hello" > /dev/tty)。
键盘:通过 fread 读取输入(如 cat /dev/input/eventX)。
统一操作接口:无论是硬件设备(如显示器、键盘)还是普通的文件,都可以通过文件操作进行读 read()、写 write() 等系统调用,简化编程与设 ...
Linux 开发工具(上)Linux 编辑器 —— vimVim 是一个强大、多模式的文本编辑器,具有高度的可定制性和丰富的功能。打开文件:在命令行中输入 vim filename,打开指定文件。Vim 从入门到牛逼 / Vim 从入门到牛逼(备用)
打开当前目录下的文件 code.c,使用命令:vim code.c,同时 支持相对路径和绝对路径 打开:vim home/code.c。
Vim 的主要模式:
命令模式(Normal Mode):命令模式是 Vim 的核心模式,几乎所有操作都从这里开始,启动 Vim 后,默认处于命令模式。在此模式下,键盘输入被解释为命令而非文本输入。只能使用方向键、删除、复制、粘贴等操作用来进行文本的导航、选择、删除、替换等。(按 i 进入插入模式,按 : 进入底行模式,按 Esc 从其他模式返回到命令模式)
插入模式(Insert Mode):按下 i 键进入插入模式。插入模式下可以像普通文本编辑器一样输入文本。按 Esc 键返回命令模式。
底行模式(Ex Mode 或 Bottom Line Mode):底行模式是 Vim 的强大功能之一, ...
C++
未读1. 再谈构造函数在面向对象编程中,构造函数 是一种特殊的成员函数,它在对象创建时自动调用,负责初始化对象的成员变量(创建对象时赋初值),确保对象在创建时有一个有效的状态。接下来,我们将详细讲解关于构造函数的几个重要概念。
1.1 构造函数体赋值当我们创建一个对象时,构造函数会被自动调用,用来给对象的各个成员变量提供一个初始值。例如:
123456789class MyClass{public: int a; MyClass() { a = 10; // 这里是构造函数体中的赋值操作 }};
在这个例子中,构造函数的作用是将 a 赋值为 10。然而,这里要注意,构造函数体中的赋值操作和初始化是有区别的。构造函数体中对成员变量的赋值只能算是给成员变量“赋初值”,而不是“初始化”。因为初始化是指给成员变量设置一个初始值,而且初始化只能发生一次,而赋值操作可以发生多次。
再例如:
12345678910111213class A{ int _x;public: A(int x) ...