C++ 沉思录笔记

有的情况下,现在的折衷方案比未来的理想方案好得多 我考虑问题的本质是什么,再定义一个类抓住这个本质,并确保这个类能独立地工作。然后在遇到符合这个本质的问题时就使用这个类。 只要类定义正确,我就只能按照我编写它的初衷那样去用它。 C++ 哲学:抽象,实用,只为用到的东西付出代价。 类设计者的核查表: 你的类需要一个构造函数吗? 你的数据成员是私有的吗?(使用函数,可以延迟计算,不必时时计算,保证数据成员的准确性) 你的类需要一个无参的构造函数吗?(对象数组) 是不是每个构造函数初始化所有的数据成员? 类需要析构函数吗? 类需要一个虚析构函数吗? 你的类需要复制构造函数吗?(是否需要深拷贝) 你的类需要一个赋值操作符吗? 你的赋值操作符能正确地将对象赋给对象本身吗? 你的类需要定义关系操作符吗? 删除数组时你记住了用 delete[] 吗? 记得在复制构造函数和赋值操作符的参数类型中加上 const 了吗? 如果函数有引用参数,它们应该是 const 引用吗? 记得适当地声明成员函数为 const 的了吗? 代理类:用类来表示概念(RAII) class Vehicle{ public: virtual double weight() = 0; virtual void start() = 0; virtual Vehicle* copy() const = 0; virtual ~Vehicle(){} }; class RoadVehicle: public Vehicle{ /* ....

January 26, 2022 · 3 min · Rick Cui

机房预约系统案例

January 24, 2022 · 0 min · Rick Cui

switch 与 if Else 区别

while 循环中的 switch, break 只能中断 switch,不能中断 while 循环 void managerMenue(){ while(true){ cout << "这是子菜单" << endl; cout << "是否返回主菜单?" << endl; cout << "1 是" << endl; cout << "2 否" << endl; int i = 0; cin >> i; switch(i){ case 1: break; case 2: return; default: break; } // if(i == 1){ // // system("reset"); // break; // } // else if(i == 2){ // return; // } // else{ // cout << "输入有误,请重新输入" << endl; // } } cout << "这是子菜单循环外代码" << endl; } int main() { while(true){ cout << "欢迎登陆!" << endl; cout << "这是主菜单" << endl; cout << "请输入选项:" << endl; int i = 0; cin >> i; // switch(i) // { // case 1: // system("reset"); // managerMenue(); // break; // case 2: // break; // } if(i == 1){ // system("reset"); managerMenue(); // break; } else{ break; } cout << "switch 外代码" << endl; } cout << "while 外代码" << endl; return 0; }

January 24, 2022 · 1 min · Rick Cui

演讲比赛流程管理案例

January 22, 2022 · 0 min · Rick Cui

常用算法

一、常用遍历算法 1. for_each 2. transform 搬运的目标容器必须要提前开辟空间(resize 而不是 reserve),否则无法正常搬运 int main() { vector<int> v; for(int i = 0; i < 10; ++i){ v.push_back(i); } vector<int> v1; v1.resize(v.size()); // 要用 resize, 不能用 reserve transform(v.begin(), v.end(), v1.begin(), [](int v){ return v * 2;}); for_each(v1.begin(), v1.end(), [](int v){ cout << v << " "; }); cout << endl; return 0; } 二、常用查找算法 1. find 2. find_if 3. adjacent_find 4. binary_search 无序序列不可用 5....

January 22, 2022 · 2 min · Rick Cui