列表 (List)
列表是一个有序的、可变的集合,可以包含任意类型的对象,例如数字、字符串、甚至其他列表。
列表使用方括号 [] 来定义,元素之间用逗号分隔。
有序性
(Ordered):列表中的元素按照它们被添加的顺序进行存储。每个元素都有一个唯一的索引(位置编号),从
0 开始。
可变性
(Mutable):你可以在列表创建后,随时添加、删除或修改其中的元素。
异构性...
“栈和队列是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的”
这句话描述的是一种经典的设计模式————适配器模式
(Adapter Pattern)。在 C++ 标准库中,std::stack 和 std::queue
正是这种模式的绝佳范例,它们并不是底层容器,
而被称为“容器适配器 (Container Adapters)”。
适配器模式 (Adapter ...
要理解尾递归和尾递归优化,首先必须理解程序是如何执行函数调用的。
函数调用与调用栈 (Call Stack)
当一个函数被调用时,计算机会在内存中一个称为
“调用栈” (Call Stack)
的特殊区域创建一个“栈帧” (Stack
Frame)。它可以看作是函数的一次执行实例的“工作区”。它存储了函数的:
参数 (Arguments):传递给函数的数值。
局部变量 (L...
类和实例基础
Python
允许在运行时动态地为某个实例添加、修改或删除属性。
123456789101112131415161718class Dog: def __init__(self, name): self.name = namedog1 = Dog("Buddy")print(dog1.name) # 输出: Buddy# 动态添加属性dog1.age...
函数的参数(Parameters)
在 Python
中,函数的参数可以分为以下几种类型:必选参数、默认参数、可变参数
(*args)、命名关键字参数和关键字参数 (**kwargs)。并且在定义函数时,
必须按照这样的顺序来排列参数. 123def complex_function(pos1, pos2, default_arg='default', *args, kw_only1...
生成器是一种特殊的迭代器,它不需要你手动去实现迭代器协议(即
iter() 和 next()
方法)。它允许你用一种更简单、更像普通函数的方式来生成一个值的序列。
生成器的核心思想是 “懒加载” (Lazy Evaluation) 或
“延迟计算”。它不会一次性在内存中创建并存储所有元素,而是在你请求下一个元素时才实时生成它。
为什么要使用生成器?
生成器最主要的优点是内存效率极...
ReAct
ReAct (Reason + Act)
核心思想是模仿人类解决问题的方式,将推理 (Reasoning)
与行动 (Acting)
显式地结合起来,形成一个“思考-行动-观察”的循环。
在ReAct诞生之前,主流的方法可以分为两类:一类是“纯思考”型,如思维链
(Chain-of-Thought),它能引导模型进行复杂的逻辑推理,但无法与外部世界交互,容易产生事实幻...
操作系统服务与接口
这部分主要介绍了操作系统(OS)为用户和系统本身提供的核心功能,以及用户与操作系统交互的方式。
操作系统服务 (Operating
System Services)
操作系统提供的服务可以从两个角度来看:为用户提供便利和确保系统高效运行。
面向用户的服务:
用户界面 (User
Interface):几乎所有操作系统都提供用户界面,主要包括命令行界面(C...
自适应替换缓存(Adaptive
Replacement Cache, ARC)
std::list
是一个序列容器,它的底层实现是双向链表(Doubly-Linked
List)。理解了“双向链表”这个数据结构,就理解了 std::list
的所有优缺点和行为特性。
std::list 的核心特性
与 std::vector(动态数组)的连续内存布局截然不同,std::list
的元素在内存中是非连续存储的。每个元素(节点)都包含三部分信息:
存储的数...