C++ 左值与右值 左值引用与右值引用
左值与右值 int a = 10; // a是左值, 10是右值 int *p = &a; // *p是左值, &a是右值 *p = 20; 左值: 表示某个特定内存位置的表达式 可以被赋值(可以出现在赋值号的左边和右边) 有明确的内存地址 例如: int a = 10; 中的a是左值 右值: 不能被赋值的表达式 不能出现在赋值号的左边 临...
左值与右值 int a = 10; // a是左值, 10是右值 int *p = &a; // *p是左值, &a是右值 *p = 20; 左值: 表示某个特定内存位置的表达式 可以被赋值(可以出现在赋值号的左边和右边) 有明确的内存地址 例如: int a = 10; 中的a是左值 右值: 不能被赋值的表达式 不能出现在赋值号的左边 临...
Lambda表达式 Lambda表达式是C++11引入的新特性,用于创建匿名函数 排序中使用Lambda表达式 #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> v = ...
基本概念 函数模板是通用的函数描述, 使用任意类型(泛型)来描述函数 类模板是通用的类描述, 使用任意类型(泛型)来描述类 在程序中, 使用具体的数据类型, 让编译器根据类模板生成具体的类定义 实际应用 template <class T1, class T2> class TemplateClass { public: T1 data1; // 通用类型用于定...
如果要编写一个函数, 用于交换两个变量的值, 传统的方法是使用指针: void funcSwap(int& a, int& b) { int temp = a; a = b; b = temp; } void funcSwap(double& a, double& b) { double temp = a; a = b...
C语言与C++98 在C语言和C++98中, auto关键字用于修饰变量(自动储存的局部变量), 但是默认的局部变量就是自动储存的, 所以auto关键字并没有实际的作用: auto int i = 42; // 等价于 int i = 42; auto double d = 3.14; // 等价于 double d = 3.14; C++11 在C++11中, a...
抗锯齿 什么是抗锯齿 对每个像素的中心坐标进行采样以判断该像素是否在三角形内部 以上图形显示结果与实际三角形形状并不一致, 因为我们只对像素中心进行采样, 但实际上像素是一个矩形, 有可能只有一个角落在三角形内部, 但整个像素却被认为在三角形外部 实际上我们期望看到的三角形应该如下图所示 为了避免出现锯齿的现象(如下图), 我们要做的内容便是抗锯齿(反走样 Anti-a...
在观测变换之后, 场景内所有物体都会被变换到$(-1, 1)^3$的规范立方体内, 那么下一步就是光栅化 透视投影 在正交投影中, 远平面近平面是由 $z$ 坐标决定的, 左平面右平面是由 $x$ 坐标决定的, 上平面下平面是由 $y$ 坐标决定的, 而在透视投影中, 远近平面同样是由 $z$ 坐标决定的, 而左右平面和上下平面则用fovY(field of view in Y为视野...
2024秋招时间线 这一年秋招真的很痛苦, 很多企业的校招感觉就是走个过场, 我自认为简历不算差(实际上也许也不好), 但是投递的几乎三分之二的企业直接就简历筛选不通过, 甚至有些大厂能筛选通过, 小厂反而不过, 且连笔试机会也没有 以下表格展示的企业都是至少简历通过筛选的: 日期 时间 公司 面试/笔试内容 ...
观察变换 观察变换(Viewing Transform)是将世界坐标系中的物体变换到裁剪坐标系中的过程 视图/相机变换 相机坐标系 视图/相机变换(View/Camera Transform)是将世界坐标系中的物体变换到相机坐标系中的过程 视图变换是在摆放照相机, 所以我们要定义相机的参数: 坐标(Position): $\vec{e}$ 观察方向(Look At/G...
三维空间中的变换 三维空间的齐次坐标表示 3D的点: $(x, y, z, 1)^T$ 3D的向量: $(x, y, z, 0)^T$ 在三维齐次坐标中, 一个点的坐标 $(x/w, y/w, z/w)$ 可以表示为: [\begin{bmatrix} x y z w \end{bmatrix} = \begin{bmatrix} x/w y/w z/w 1...