主页

Gcc工具链常见参数详解

写在前面 单文件编译 #include <cstdio> #define out(x) printf(x) int main(int argc, char *argv[]) { const int a [[maybe_unused]] = 7; // stdc++17 out("hello cpp\n"); return 0; } 预处理-E g++ -E aa.cpp -o aa.i # cpp aa.cpp > aa.i # 或者用 cpp 预处理器 (The C Preprocessor) aa.i的部分结果: # 4 "aa.cpp" int main(int argc, char *argv[])...

阅读更多

关于stl迭代器前置++和后置++性能的汇编层面分析

源码 /opt/homebrew/Cellar/llvm/16.0.4/include/c++/v1/__iterator/wrap_iter.h // clang llvm _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __wrap_iter& operator++() _NOEXCEPT { _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), "Attempted to increment a non-incrementable iterator"); ...

阅读更多

C++lambda一些有用的操作总结

写在前面 lambda 简介 这里我最喜欢的一个功能就是参数捕获列表, 可以很大程度上减少参数的重复传递, 一个 & 足矣(当然也不能滥用) 参数捕获 常见操作 指定比较规则(sort, priority_queue) 指定其他规则 简短函数的封装 递归支持 用递归版本的 lambda 主要是方便参数的捕获. 试想回溯法中参数一多了, 写成独立的两个函数就要传入很多并不是递归变量的变量, 没有必要, 不过写递归lambda 的坏处就是不如两个函数那样简洁明了. 这里有两种比较常见的方法, 第一种就是每次刷题都用的function类模板(函数对象) 下面的例子是经典的反转链表递归写法(复习一下) function<ListN...

阅读更多

并查集相关题目总结

并查集相关题目 简介 并查集(Union-Find-Set, UFS) 主要有两个功能: 将两个元素合并到一个集合中 判断两个元素在不在一个集合中 模板 路径压缩 // init int fa[N]; for (int i{}; i < N; ++i) fa[i] = i; // Find function<int(int)> Find = [&](int u) { return u == fa[u] ? u : fa[u] = Find(fa[u]); }; // check auto isSame = [&](int u, int v) { return Find(u) == Find(v); }; // jo...

阅读更多

Golang导入本地包,模块的方法总结

写在前面 来总结一下 GoLang 中使用本地包的操作. environment: ==> go version go version go1.20.4 darwin/arm64 go mod 是 go 1.11 (大约 2018 年 之后)开始支持的 本地包的导入可以分成两个情况, 即: 要导入的包存在于在本项目的目录下, 直接导入. 要导入的包存在于其他目录下, 使用 replace 命令导入. 代码可以在这里找到: GoLang中使用本地包的操作; 在本项目目录下导入 这里以在 ./pkg0/main.go 中导入内部目录 ./pkg0/kpkg/ 中的 kpkg 模块为例, 首先需要填写内部模块(kpkg)的go.mo...

阅读更多

Total views.
您是Zorch的第 个小伙伴
Hits