深度探索c++对象模型笔记(第一章)关于对象
写在前面
这部分内容主要是一个引子, 包含以下经典的问题, 介绍了 C++在对象模型这方面的设计与演进.
数据成员和成员函数的内存布局
虚函数的内存布局
继承模型, 父类和子类的内存布局
C++对象模型
两种类数据成员:
静态.
非静态
三种类成员函数:
静态
非静态
虚
几种模型
简单对象模型: 一个对象是一系列的槽(slot), 每个 slot 指向一个成员, 成员按照其声明顺序各被指定一个 slot, 每个成员(数据/函数)都有自己的 slot;
表格驱动对象模型: 把所有与成员相关的信息抽取出来, 放在一个数据成员表和成员函数表中, 类对象本身内含指向这两个表格的指针. 成员...
C++定制比较规则的各种方法总结
写在前面
写一下刷题中常用的 C++ 算法库函数 sort(), lower_bound()等函数以及优先队列等需要自己定制比较规则的方法.
#include <algorithm>
utils
输出
template <typename T> // nd-array can use this
ostream& operator<<(ostream& os, const vector<T>& v) {
for (auto i : v) os << i << " ";
return os << '\n';
}
void print_...
C++在main函数之前或之后执行的函数
写在前面
总结一波面试题
测试环境 Ubuntu+clang
之前执行
#include <iostream>
using namespace std;
__attribute((constructor)) void before() { // C
cout << "before main 1\n";
}
int a = []() { // C++ 11
cout << "before main 2\n";
return 0;
}();
int t1() {
cout << "before main 3\n";
return 1;
}
static int p1 = t1()...
Jekyll博客配置mermaid支持以及暗黑主题适配
写在前面
最近忙里偷闲, 搞一下博客, 由于写一些笔记需要做时序图和类图, markdown 有现成的支持: mermaid-js, 网站, 这里就直接拿来主义了, 我的博客是基于 jekyll-TeXt-theme 的, 里面内置了 mermaid 开关, 但是版本已经比较老旧了, 下面来看看如何更新配置以及适配暗黑主题(如果用默认主题会导致线条显示对比度不明显).
方法
开启支持
先改_config.yml文件:
## => Markdown Enhancements
##############################
## Mathjax
mathjax: true # false (default), true
mathjax_autoNumber: ...
操作系统导论笔记 并发
写在前面
全部代码: ostep_cases;在 Linux+MacOS 下运行通过.
下面的代码都是基于 C 的, 当然为了不分文件测试我用了 C++ 的命名空间, 实际使用的话可以用类封装一下 API, 使用 RAII 惯用法, 避免忘记释放锁, 这部分内容在之后的文章中给出.
线程(thread)
基本概念与术语
临界区: 访问共享资源的一段代码, 资源通常是一个变量或者数据结构
竞态条件(race condition): 出现在多个执行线程大致同时进入临界区时, 都试图更新共享的数据结构, 会导致异常的结果.
不确定性: 程序由一个或多个竞态条件组成, 程序的输出因运行而异, 具体取决于哪些线程在何时运行. 这就导致了不确定的结果
互斥原语:...
多路归并的一些题目总结
写在前面
参考了:
【多路归并】从朴素优先队列到多路归并;
基本问题
88. 合并两个有序数组;
双指针归并:
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
// 反着遍历插入数组
for (int i{m + n - 1}, j{m - 1}, k{n - 1}; i >= 0; --i) {
if (j < 0)
nums1[i] = nums2[k--];
...
共计 465 篇文章,59 页。
您是Zorch的第 个小伙伴
Hits