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...
共计 460 篇文章,58 页。
您是Zorch的第 个小伙伴
Hits