- 博客(500)
- 资源 (49)
- 问答 (8)
- 收藏
- 关注
原创 std::ranges::iota
你可以使用生成enumchar, 或int value;// 构造函数// operator++ (前置递增)++value;// 比较运算符return!int main()要求类型支持operator++(即满足特性描述惰性生成元素按需生成,不占用内存无限或有限序列可以无限增长,也可以指定边界类型支持任何可自增类型,如整数、枚举、时间点常与配合限制无限序列长度范围特性支持 forward range,支持迭代算法形式描述无限递增从 5 开始。
2025-05-19 15:39:54
1150
原创 std::ranges::views::drop 和 std::ranges::drop_view
和是 C++20 引入的范围适配器,用于创建一个跳过前 N 个元素的新视图。
2025-05-19 15:17:55
910
原创 std::ranges::views::stride 和 std::ranges::stride_view
是 C++23 中引入的一个范围适配器,用于创建一个视图,该视图只包含原始范围中每隔 N 个元素的元素(即步长为 N 的元素)。
2025-05-19 15:10:34
908
原创 std::ranges::views::zip, zip_transform 和 std::ranges::zip_view, zip_transform_view
和是 C++23 中引入的用于将多个范围组合成一个元组序列的视图适配器。在标头<ranges>定义requires (inline constexpr /* 未指明 */ zip = /* 未指明 */;调用签名requires /* 见下文 */1)zip_view是范围适配器,接收一或多个并产生一个,其第i个元素是所有视图的第i个元素组成的元组式值。所产生视图的大小为所有适配视图的最小大小。2)views::zip是定制点对象。无实参调用时 views::zip()于 auto(<>>)。
2025-05-19 11:30:52
894
原创 std::ranges::views::repeat, std::ranges::repeat_view
是 C++20 引入的一个范围适配器,用于生成一个无限序列,其中所有元素都是同一个值的重复。是其对应的范围适配器对象。
2025-05-19 11:27:09
211
原创 std::ranges::views::as_const 和 std::ranges::as_const_view
是 C++23 引入的视图适配器,用于生成一个不可变的视图,确保通过该视图访问元素时,元素被视为常量。inline constexpr /* 未指明 */ as_const = /* 未指明 */;提供了一种类型安全的方式,确保通过视图访问的元素不可修改。适用于需要强制数据只读性的场景,增强代码安全性和可维护性。与标准算法和其他视图适配器无缝结合,支持复杂的链式操作。生成一个惰性视图,不复制数据,仅在访问时应用常量性。若元素可修改,通过视图访问时变为。仅修改类型系统,运行时无性能损失。对象,表示只读视图。
2025-05-19 11:10:04
474
原创 ranges::views::adjacent_transform, ranges::adjacent_transform_view, ranges::views::pairwise_transfor
constexpr /* 未指明 */ adjacent_transform = /* 未指明 */;constexpr /*范围适配器闭包*/ adjacent_transform<N>( F&& fun );是 C++23 中引入的范围适配器,用于对输入范围的相邻元素应用函数并生成转换后的结果。个相邻元素作为参数传递给函数,生成转换后的结果视图。个参数,类型与输入元素的(可能投影后的)类型匹配。的扩展,结合了滑动窗口和惰性变换的功能。大于输入范围的大小,生成的视图为空。的别名,专门处理相邻的两个元素。
2025-05-19 11:05:20
611
原创 std::ranges::views::adjacent, std::ranges::adjacent_view, std::ranges::views::pairwise
是 C++23 中引入的范围适配器,用于生成输入范围中相邻元素的元组。它们提供了一种简洁的方式处理滑动窗口操作,适用于需要连续元素组合的场景。constexpr /* 未指明 */ adjacent = /* 未指明 */;元组的生成是惰性的,遍历时按需生成,时间复杂度为 O(n)。作为惰性视图,适用于大规模数据处理,避免不必要的内存开销。生成的元组是连续且重叠的(滑动步长为1),而。的别名,生成相邻两个元素的元组(即。大于输入范围长度,生成的视图为空。对象,表示相邻元素的元组视图。
2025-05-19 10:57:58
582
原创 std::ranges::find_last, std::ranges::find_last_if, std::ranges::find_last_if_not
的元素。它们返回一个子范围(
2025-05-19 10:52:23
634
原创 std::ranges::views::chunk, std::ranges::chunk_view, std::ranges::views::chunk_by, std::ranges::chunk
是一个强大的范围适配器,特别适合需要基于相邻元素关系对序列进行分组的场景。它提供了一种声明式的方式来处理这类问题,使代码更加简洁和表达性强。<ranges>
2025-05-19 10:48:15
1000
原创 std::ranges::starts_with 和 std::ranges::ends_with
int age;// 示例4:自定义比较(不区分大小写)// true// 示例5:投影使用people,{}, // 默认比较&Person::name // 投影到 Person::name// true。
2025-05-19 10:33:38
848
原创 flat_map, flat_set, flat_multimap, flat_multimap
性能:xhttps://zhuanlan.zhihu.com/p/661418250。
2025-05-18 17:46:42
874
原创 std::stacktrace
是 C++23 引入的标准库组件,用于在运行时捕获、存储和操作调用栈信息。它类似于其他语言(如 Python 的traceback或 Java 的)的堆栈跟踪功能,帮助开发者调试或记录程序执行路径。
2025-05-18 09:42:59
251
原创 C++20 小语法
对于严格的C++ 编译器来说,以前在这种情境下int无法向下转换为bool,需要手动强制转换,这个提案允许在static_assert和if constexpr中从整形转换为布尔类型。C++23 这一情况得到了改善。以下表格就可以表示所有内容。
2025-04-28 22:22:02
322
原创 auto(x) decay copy
元素和欲移除元素,若不相等,则用当前元素覆盖当前__result 迭代器的值,然后__result 向后移一位。std::remove() 最终调用的是remove_if(),因此关键就在这个算法里面。请注意该程序的输出,是否如你所想的一样。foo() 中调用bar(),希望传递一份param 的拷贝,则我们需要单独多声明一个临时变量。而auto{x} 和auto(x),就相当于这个copy() 函数,只不过它是内建到语言里面的而已。然而这种方式是非常反直觉的,一般来说这两种写法的效果应该是等价的。
2025-04-28 22:20:46
317
原创 std::print 和 std::println
std::print和是 C++23 新增的格式化输出函数,旨在替代传统的std::cout链式调用。它们基于实现,支持类型安全的格式化字符串,语法更简洁,性能更优15。直接输出到stdout(默认)或指定的流。自动在输出末尾添加换行符。支持与相同的格式化语法(如{}占位符)。
2025-04-28 22:02:20
1164
原创 多维array和多维视图std::mdspan
传统多维数组:适合静态、编译时已知维度的场景。:提供动态维度、灵活布局和高效访问,是 C++23 处理多维数据的现代方式。<mdspan>
2025-03-20 21:09:52
802
原创 Deducing this
因为静态成员函数并没有this指针,隐式对象参数并不能和this指针划等号,静态函数拥有隐式对象参数只是保证重载决议能够正常运行而已,这个参数没有其他用处。Deducing this 是个单独就可写篇四五星难度文章的特性,用处很多,值得深入探索的地方也很多,所以即便是概述这部分也写得比较多。Sy Brand 是该提案的作者之一。对于隐式的this指针,生成的汇编代码需要先分配栈空间,保存this指针到rcx寄存器中,再。这种新的方式实现CRTP,可以省去CR,甚至是T,要更加自然,更加清晰。
2025-03-19 20:17:13
749
原创 &&右值引用函数 和 &左值引用函数
&&右值引用函数 和 &左值引用函数void sorted() &&;//右值引用 void sorted() &;//左值引用void sorted() const &;void sorted() const &&;
2025-03-17 19:52:37
237
原创 C++20 指定初始化器
对于聚合,C++20 提供了一种方法来指定应该用传递的初始值初始化哪个成员,但只能使用它。与编程语言C 相比,指定初始化器遵循成员顺序的限制,可以用于所有参数,也可以不用于参。仍然有一些类型不能用括号初始化,但可以用花括号初始化: 作用域枚举(枚举类类型)。• 括号初始化和括号初始化应尽可能相似,但也应尽可能不同,以符合现有的括号列表和括号。最后,若对具有右值引用成员的聚合使用圆括号进行初始化,则初始值的生存期不会延长,所。由于这些复杂的规则和陷阱,只有在必要时才应该使用带圆括号的聚合初始化,比如在使用。
2025-03-16 20:32:04
713
原创 std::ranges::views::reverse, std::ranges::reverse_view
std::ranges::views::reversestd::ranges::reverse_view
2025-03-12 23:02:41
328
原创 std::ranges::views::common, std::ranges::common_view
std::ranges::views::common, std::ranges::common_view
2025-03-12 22:32:25
265
原创 std::ranges::views::split, lazy_split, std::ranges::split_view, lazy_split_view
std::ranges::views::splitstd::ranges::split_viewstd::ranges::views::lazy_splitstd::ranges::lazy_split_view
2025-03-12 21:54:54
818
原创 std::ranges::views::keys, values, elements std::ranges::keys_view, values_view, elements_view
std::ranges::views::keysstd::ranges::keys_viewstd::ranges::views::valuesstd::ranges::values_viewstd::ranges::views::elementsstd::ranges::elements_view
2025-03-11 22:09:23
718
原创 std::ranges::views::drop, drop_while, std::ranges::drop_view, drop_while_view
std::ranges::views::dropstd::ranges::drop_viewstd::ranges::views::drop_whilestd::ranges::drop_while_view
2025-03-11 21:35:32
644
原创 std::ranges::views::take, take_while,std::ranges::take_view,take_while_view
范围适配器闭包对象(Range Adaptor Closure Object),可通过管道操作符。,可以高效处理范围的前 N 个元素,是函数式编程风格的典型工具。根据谓词(Predicate)截取原范围中满足条件的元素,一旦遇到不满足条件的元素,立即停止遍历,后续元素不再检查。若范围在遍历过程中被修改,可能导致未定义行为。是C++20 引入的范围库中的组件,用于。若原范围元素少于 N 个,则取整个范围。若所有元素都满足条件,则包含整个范围。一个范围适配器,生成原范围的。不保留后续满足条件的元素。
2025-03-10 22:09:31
532
原创 std::ranges::views::join,std::ranges::views::join_with
std::ranges::views::joinstd::ranges::views::join_with
2025-02-27 10:07:08
611
原创 std::ranges::views::filter
C++20 引入的视图适配器,用于根据谓词条件惰性过滤范围内的元素。通过捕获变量,可动态调整过滤条件对象为自定义结构体或类。:支持 Lambda、函数对象或成员函数。:迭代器类别继承自原始范围,可能影响性能。:惰性求值,不存储结果,适用于流式处理。视图可反向遍历(需注意效率)。:立即执行并将结果保存到容器中。生成仅包含满足条件元素的视图。:仅在遍历时计算,节省内存。链式组合多个视图适配器。:可与其他视图适配器(如。若原始范围支持双向迭代,
2025-02-27 09:16:01
702
原创 std::ranges::ref_view,std::ranges::owning_view, std::ranges::views::all
std::ranges::ref_viewstd::ranges::owning_view std::ranges::views::all
2025-02-26 22:09:45
977
原创 std::ranges::transform,std::ranges::views::transform, std::ranges::transform_view
std::ranges::transformstd::ranges::views::transformstd::ranges::transform_view
2025-02-24 12:32:14
695
原创 std::ranges::replace, std::ranges::replace_if,std::ranges::replace_copy
std::ranges::replacestd::ranges::replace_ifstd::ranges::replace_copy
2025-02-22 13:27:50
1016
原创 std::ranges::copy, copy_if, copy_n, copy_backward, replace_copy, replace_copy_if, reverse_copy
std::ranges::copystd::ranges::copy_ifstd::ranges::copy_nstd::ranges::copy_backwardstd::ranges::replace_copystd::ranges::replace_copy_ifstd::ranges::reverse_copystd::ranges::rotate_copystd::ranges::unique_copy
2025-02-21 19:48:40
776
原创 std::ranges::remove, std::ranges::remove_if, std::ranges::remove_copy, std::ranges::remove_copy_if
std::ranges::removestd::ranges::remove_ifstd::ranges::remove_copystd::ranges::remove_copy_if
2025-02-19 11:22:46
1024
slickedit2014 V19
2015-02-01
gvim编辑器 加强版vim
2012-04-15
total commander
2012-03-29
Unix网络编程实用技术与实例分析
2011-11-06
毕业设计论文:电子信息管理系统
2010-04-24
sourceinsight4.0.0085
2017-04-10
C++ Concurrency_In_Action c++11多线程编程
2017-03-01
slickedit 2016(v21) pro crack 破解
2016-11-25
xshell V4.0
2015-07-08
小新v4000安装win10系统,请问如何修改默认快捷键?
2015-10-14
linux上slickedit如何调试守护进程?有么有调试过的?能否详细说明下
2015-08-27
centos6.5 64位上gdb调试无法使用了
2015-06-25
net-snmp中通过subagent方法,如何把多个Table编译成一个可执行文件?
2015-06-09
net-snmp在agent端如何实现MODE_GETNEXT的代码?
2015-06-03
net-snmp表中数据的获取、添加、修改、删除是怎么实现的?
2015-06-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人