C++20的宇宙飞船

C++添加了<=>运算符,当使用 a <=> b 时,它返回的不是一个简单的布尔值 (true/false) 或整数。 它返回一个特殊的比较类别对象 (comparison category object)。这个对象封装了 a 和 b 之间详细的排序关系。这些对象的类型都定义在 <compare> 头文件中。 最核心的返回类型有三种: 1. std::strong_ordering (强有序) 2. std::weak_ordering (弱有序) 3. std::partial_ordering (偏序) 理解返回对象的本质:与 0 比较 理解这些返回对象最简单的方式,…

C++的进阶操作

向量 ![[OJ-1#vector]] 栈 std::stack 是一种后进先出(Last-In, First-Out,简称 LIFO)的数据结构。你可以把它想象成一摞盘子:你只能在最上面放盘子,也只能从最上面取盘子。最后放上去的盘子,最先被取出来。 在 C++ 中,std::stack 并不是一个独立的容器,而是一个容器适配器(container adapter)。这意味着它是在其他现有容器类型(如 std::vector, std::deque, std::list)的基础上实现的,通过限制这些底层容器的接口,来提供特定的栈功能。默认情况下,std::stack 使用 std::deque 作为其底层容器。 头文件: C++ #include <stack>…

C++关于迭代器的操作

<iterator>类 迭代器的选择与种类 函数名 描述 begin() / cbegin() 返回指向数组第一个元素的迭代器。cbegin() 返回一个 const 迭代器。 end() / cend() 返回指向数组末尾之后位置的迭代器。cend() 返回一个 const 迭代器。 rbegin() / crbegin() 返回指向数组最后一个元素的反向迭代器。 rend() / crend() 返回指向数组第一个元素之前位置的反向迭代器。 迭代器的操作: 通用迭代器 std::advance(it, n) * it:要移动的迭代器(按引用传递,会被修改) * n:移动的步数(整数,正数向前,负数向后) 特点:直接修改传入的迭代器,并且适用于所有迭代器类型 向前移动迭代器std::next(it, n) * it:…

C++中的标准库函数对象

1. 什么是函数对象 (Function Object)? 首先,一个函数对象(也常被称为仿函数 Functor),其本质是一个重载了函数调用运算符 operator() 的类的对象。 简单来说,它是一个“行为像函数”的对象。你可以像调用一个普通函数一样来“调用”这个对象。 一个最简单的自定义函数对象示例: #include <iostream> // 1. 定义一个类 class Greeter { public: // 2. 在类中重载 operator() void operator()(const std::string& name) const { std::cout << "Hello, " << name <…

C++中视图(View)对象适配器

C++20 表格 适配器 (Adapter) 主要功能 简要说明与示例 views::all 将一个容器或范围转换为视图。 这是许多视图操作的基础,确保你正在处理一个视图。 <br>示例: views::all(my_vector) views::filter 过滤范围中的元素。 只保留那些满足特定谓词(返回 true)的元素。<br>示例: views::filter([](int i){ return i % 2 == 0; }) (只保留偶数) views::transform 转换范围中的每个元素。 对每个元素应用一个函数,并生成一个包含转换后结果的新视图。 <br>示例: views:…

OJ-1

基础算法实践一 vector 基本是对基础Vector的应用,这里复习一下: 构造vector变量: //创建一个空的vector vector<int> vec1; //初始化列表(C++11) vector<int> vec2 = {1, 2, 3, 4, 5}; vector<string> vec_str = {"hello", "world"}; //制定空间数量,并给予默认值,这里是5个空间,默认值100 vector<int> vec4(5, 100); //复制操作 vector<…

12.ETH-美链

ERC-20 ERC-20 本身不是一个代币,也不是一段代码,而是一套“技术标准”或“接口规范”。它为所有基于以太坊的“同质化代币”(Fungible Tokens)定义了一套通用的、必须遵守的规则。“同质化”意味着每个代币之间都是完全相同、可以互换的,就像你钱包里的一元硬币和我钱包里的一元硬币一样,没有区别。 “ERC”是“Ethereum Request for Comments”的缩写,意为“以太坊意见征求稿”,而“20”是这份提案的编号。该标准规定,任何希望被视为ERC-20代币的智能合约,必须实现以下一套函数和事件(Events)。 核心函数与事件接口 函数/事件 描述 作用与解释 name() (可选) 返回代币的名称,如 "Tether USD"。 方便用户界面展示。 symbol(…

11.ETH-反思

智能合约并不智能 智能合约所指的智能并不是指其拥有智慧,而是指它能以一种更自动化、更高效、自我执行的方式来处理和强制执行协议,从而超越了传统法律合同的“愚笨”(需要律师、法院等大量人力去解释和强制执行)。 它的真正价值在于: 1. 无需信任 (Trustless):这是最核心的价值。你不需要信任交易对手、银行、律师或任何第三方中介。你只需要信任公开透明、经过审计的代码和数学。信任被制度化、代码化了。 2. 不可篡改 (Immutable):一旦部署,合约的规则就被永久刻在区块链上,任何人都无法单方面修改。这提供了极高的确定性和安全性。 3. 自动化与效率 (Automation & Efficiency):一旦条件被触发,合约立刻执行,没有拖延、没有文书工作、没有寻租空间,极大地提高了商业协作的效率。 4. 透明可验证 (Transparent & Verifiable):任何人都可以随时去链上审查合约的代码和所有历史交易,一切都无可隐藏。 它的机械、死板、确定性,恰恰是构建“…