2024 11 16, 2018 今日內容
2024-11-16, 20:18-今日內容
Cpp一般的普通的代码块, 结束了是不加上分号的。
咋cpp里main, 某些特定的module在具体define函数(不是在h文件的声明) 需要每次都加上作用域::
Cpp初始化 2d的matrix的方法:注意看 特鄙视后面这一坨,不能直接写成(4, vector
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Cpp一般的普通的代码块, 结束了是不加上分号的。 void printMessage() { std::cout « “Hello, world!” « std::endl; } // 正确,函数结束后不需要分号
只有在定义某个class的时候, 才要: class Matrix { // Class body }; // 正确,类声明结束后需要分号
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
咋cpp里main, 某些特定的module在具体define函数(不是在h文件的声明) 需要每次都加上作用域:: 看例子: 
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Cpp初始化 2d的matrix的方法:注意看 特鄙视后面这一坨,不能直接写成(4, vector
默认参数必须是一个 完整的表达式,可以唯一解析出结果。
(4, vector
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Cpp在声明,也就是h文件里面的时候,是不需要写清楚作用域的也就是::是不能写的。 只有在cpp文件里面,具体的实现才要写,看例子… Cpp在声明,也就是h文件里面的时候,是不需要写清楚作用域的也就是::是不能写的。 只有在cpp文件里面,具体的实现才要写,看例子: 
class Matrix {
public:
Matrix();
void setGrid(std::vector<std::vector
Matrix::Matrix() { // Constructor implementation }
void Matrix::setGrid(std::vector<std::vector
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Cpp里面即使函数没有任何返回的value, 也需要吧void补上。 例子: void printMessage() { std::cout « “Hello, world!” « std::endl; }
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Cpp里面的set和get主要是用来访问和改变私有变量的value。 这是一种约定俗成, 你必须嗷非常了解一个东西该不该public… Cpp里面的set和get主要是用来访问和改变私有变量的value。 这是一种约定俗成, 你必须嗷非常了解一个东西该不该public,否则你就不能把他从private弄成public, 要不然就不安全。 Set和get 就是让你的操作变得更安全的做法。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Cpp里面的size_type 是一种类型, 也就是标准库自带的;一般固定的size的matrix 就可以在定义长度w 和h的时候… Cpp里面的size_type 是一种类型, 也就是标准库自带的;一般固定的size的matrix 就可以在定义长度w 和h的时候指明。 或者你可以看看std::cout。 这里的:: 就是说作用域是什么。 size_type 是一种专门用于容器大小的无符号整数类型,推荐用于容器的索引和大小表示 例子:
#include
// Header file for the Matrix class
/* ** Declare the following private variables: ** a 2D float vector variable called grid ** a vector size_type variable called rows ** a vector size_type variable called cols */
class Matrix
{
private:
// 二维浮点数向量表示的矩阵
std::vector<std::vector
// 使用 std::vector 的 size_type 来定义行和列
std::vector<float>::size_type rows; // 行数
std::vector<float>::size_type cols; // 列数 };
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Cpp 初始化一个matrix 可以有两种写法:也就是说我们其实是有知道m个row, 但是每个row我们让他的value事一个新的… Cpp 初始化一个matrix 可以有两种写法:也就是说我们其实是有知道m个row, 但是每个row我们让他的value事一个新的vector形式的column。
1. vector<vector<int>> C(ah, vector<int>(bw, 0)); 注意这里的vector<int>(bw, 0) 并没有给他名称。 别画蛇添足
2. 或者你可以这么写:
1. vector<int> Crow(bw, 0);
2. vector<vector<int>> C(ah, Crow)

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Cpp 当我们知道了某个vector或者matrix的输出的形状了, 我们最开始也给他初始化了, 接下来就不需要在push back… Cpp 当我们知道了某个vector或者matrix的输出的形状了, 我们最开始也给他初始化了, 接下来就不需要在push back了 可以直接通过索引访问:
- 为什么可以不用 push_back 而直接用 C[i][j] += A[i][k] * B[k][j]? 原因 • 当 C 已经初始化为一个固定大小的二维向量时,可以通过索引 C[i][j] 直接访问和修改对应元素,而无需动态扩展。 • 在 vector 中,push_back 的作用是动态添加新元素,但 C 已经提前初始化为正确大小,因此只需修改已有的元素即可。
C[i][j] += A[i][k] * B[k][j]; 实用 C++ - 练习 — Practical C++ - Exercises
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Cpp 实现两个matrix的乘法, 涉及到我们固定控制vector:vector<vector
C = { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} };
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
默认用gcc17的方法 直接在zshrc里面吧g++的别名改成alias g++=’g++ -std=c++17’ 
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Clang和gcc都是编译器, 一般gcc的错误和warning 比较简洁, clange的更加详细, 用户友好。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Cpp 大项目main如果要传递变量到某个小的模块, 可以考虑全局变量extern world。 并且main和小模块都是单独编译… Cpp 大项目main如果要传递变量到某个小的模块, 可以考虑全局变量extern world。 并且main和小模块都是单独编译的, 所以需要都定义vector 和string 等等 还有std。 具体看下面这个例子:
#include
extern vector
vector
for (size_t i = 0; i < p.size(); i++) {
bool hit = (Z == world[i]); // 使用外部变量 world
q.push_back(p[i] * (hit * pHit + (1 - hit) * pMiss));
}
float s = 0;
for (float prob : q) {
s += prob;
}
for (float& prob : q) {
prob /= s;
}
return q; }
#匯總今日內容