函数对象 函数对象(也称为仿函数)是 C++ 中的一种概念,它允许对象表现得像函数一样。这意味着可以像调用普通函数那样调用这些对象。函数对象可以是以下几类: 重载了函数调用运算符的类创建的对象: 用户自定义的类,通过重载 operator() 运算符,可以创建出自己的函数对象。这些对象可以有状态(即数据成员),也可以是无状态的。 函数名: 在 C+…
函数对象 函数对象(也称为仿函数)是 C++ 中的一种概念,它允许对象表现得像函数一样。这意味着可以像调用普通函数那样调用这些对象。函数对象可以是以下几类: 重载了函数调用运算符的类创建的对象: 用户自定义的类,通过重载 operator() 运算符,可以创建出自己的函数对象。这些对象可以有状态(即数据成员),也可以是无状态的。 函数名: 在 C+…
基本语法特性 [capture](params) opt -> retureType { body; }; 其中 capture 是捕获列表,params 是参数列表,opt 是函数选项,retureType 是返回值类型,body 是函数体。 捕获列表 不能省略。捕获一定范围内的变量。 [] 不捕捉任何变量。 [&] 捕获外部作用域…
概述 算法中包含很多对容器进行处理的算法,使用迭代器来标识要处理的数据或数据段、以及结果的存放位 置,有的函数还作为对象参数传递给另一个函数,实现数据的处理。这些算法可以操作在多种容器类型 上, 所以称为“泛型”,泛型算法不是针对容器编写,而只是单独依赖迭代器和迭代器操作实现。而且算法 库中的算法都是普通函数(自由函数)。 算法的分类 非修改式的算…
JS 的调用方式与执行顺序 使用方式 HTML页面中的任意位置加上 <script type="module"></script> 标签即可。 常见使用方式有以下几种: 直接在 <script type="module"></script> 标签内写 JS 代码。 直接引入文件:<script …
迭代器的基本概念 迭代器(iterator)模式又称为游标(Cursor)模式,用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。 或者这样说可能更容易理解:Iterator 模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道对象内部表示的情况下,按照一定顺序(由 iterator 提供的方法)访问聚…
容器的选择 元素是不是有序 如果需要保持元素的有序状态,那么关联式容器通常是最佳选择。这些容器,如 set 和 map,内部使用平衡二叉树(通常是红黑树),它们会自动维护元素的有序性,且允许进行高效的查找、插入和删除操作。 对于无序关联式容器,如 unordered_set 和 unordered_map,它们基于哈希表实现,不保证元素的顺序,因此…
哈希 哈希函数 哈希函数是一种根据关键码 key 去寻找值的数据映射的结构,即:根据 key 值找到 key 对应的存储位置。 size_t index = H(key) // 由关键字获取所在位置 哈希函数的构造方式 定址法: 这种方法使用线性函数来构造哈希函数,公式为 H(key) = a * key + b。其中,a 和 b 是常数,需要根据…
set 的使用 基本特征 std::set 是一种关联容器,含有 Key 类型对象的已排序集。用比较函数进行排序。搜索、移除和插入拥有对数复杂度。set 通常以红黑树实现。 默认构造: 创建一个空的 set。 set<Key, Compare, Allocator> set1; 复制构造: 使用另一个 set 的内容、比较函数和分配器来…
其他样式 圆角边框 在 CSS3 中,新增了圆角边框样式,这样我们的盒子就可以变圆角了。 border-radius 属性用于设置元素的外边框圆角。 border-radius:length; 参数值可以为数值或百分比的形式 如果是正方形,想要设置为一个圆,把数值修改为高度或者宽度的一半即可,或者直接写为 50% 该属性是一个简写属性,可以跟四个值…