逻辑电路/c++

逻辑电路/c++

Winter Lv4

大爱逻辑电路,简洁是美的灵魂

  • My Efficient c ++ (想不到吧)

    同时,我觉得既然是总结,咱们就换一种视角串联整个c ++ 知识点。

  • 模板

    模板推断,也就是实例化是编译器的工作。理解实例化,只有实际调用或者是定义时才会实例化。并且不同实例的函数或者类是独立的。同时模板定义一般写在头文件里面。class 和 typename 是相同的含义。模板具有默认类型参数,所以平时看定义的时候注意一下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    template <unsigned N,unsigned M> compare(char (&a)[N],char (&b)[M]);	// 非类型实参
    template <typename T,typename F=less<T>>int compare(const T&v1,const T&v2,F f=F());
    template <class T=int> class Numbers{};
    Numbers <> b; // 使用默认参数 任何时候<>都不能省略

    class Debugdelete{
    public:
    template<typename T>void operator()(T*p)const{delete p;} // 之所以有const的原因是const保护的是删除器的成员,区分清楚保护的对象 p 是外来的
    };

    Debugdelete()(); //在一个临时对象上调用operator()
    unique_ptr<int,Debugdelete> ptr(new int,Debugdelete()); // 这里可以窥见删除器的本质就是一个可调用对象,这是一个简洁而深刻的概念 全新的 这是常见的用法
    unique_ptr<int, decltype(compareIntfunction)*> ptr2(new int ,compareIntfunction); // 类似的 具体原理就是指针调用析构函数时会是使用删除器

    void check(size_type i,const std::string & msg)const
    { if(i>=data->size())
    throw std::out_of_range(msg);}// 这个工厂函数写得很好!!!

1
2
3
4
5
6
7
8
9

template<typename T>
class A{
template<typename It>A(It b,Ite);
};

template<typename T>
template<typename It>
A<T>::A(It b,It e):data(make_shared<std::vector<T>>(b,e)){}
  • 类模板的成员模板

    正是依靠这个实现迭代器构造函数.——一个问题,由于实例化时,每一个独立的源文件都需要一份实例,可能存在重复的性能消耗,所以我们可以显示控制实例化 extern 声明一个具体的类型参数的模板,然后必须在某一文件里有定义 template 开始。最后记得链接在一起。定义其实也就是一句话,对于类模板来说这会使得所有成员都实例化,这点注意哦
    这里也有一个有趣的问题就是shared_ptr 与 unique_ptr 删除器的实现方式。shared_ptr 可以随时reset 改变删除器所以实际是将删除器作为成员保存,指针形式保存,析构时大概就是 del? del(p): delete p; 而 unique_ptr 只允许定义时传入作为模板参数,所以就是编译时绑定效率更高,但是不能任意改变。

  • 异常处理

    异常处理包含两个过程,异常捕获和异常处理。捕获依靠throw 表达式,处理依靠try catch 语句块。 注意想要被catch 捕获需要使用try 存在 try 的多重嵌套,依照调用链反向寻找所有层次的catch 语句直到匹配,如果一个都不匹配则terminate直接终止。有一些标准库定义的错误类,有些需要初始化const char[]。 .what()方法可以查看字符串内容 栈展开其实就是。 展开过程会销毁对象,依照局部对象的销毁原则。
    异常对象可以是标准库定义,也可以自己定义,完全类型有可访问的析构与构造函数,同时如果在throw 语句中解引用指针,如果是一个派生对象,基类指针则抛出的部分只有其基类的部分

  • 随机数

    随机数使用,包含两个部分,一个部分是随机数引擎,另一个是随机数分布。引擎生成一系列unsigned ,分布完成我们的需求生成所需的指定类型给定范围,满足特定概率分布的随机数 。引擎需要种子,否则也是固定的伪随机 ,default_random_engine 其实是系统预定义的最佳引擎,具体有三个。然后分布种类是模板,需要指定类型别名。调用的方法类似 u(e) 。 u是分布种类。 e 是对象。

  • 5G555 多谐振荡器 产生脉冲

  • 数字电路要义

    • 逻辑函数

      使用与非门来建立所有三种逻辑门,实现电路的统一。异或可以用于奇偶校验 奇数个变量为1 结果就是1 偶数个为0 对偶函数就是0 1 也要互换记得和反演一样 同或就相反 与或表达式就是先与后或 区别最小项最大项的方法 就是 最小项之和 最大项之积
      卡诺图注意最小项在图中对应的顺序 卡诺图中每个圈至少需要一个一个独立 的1(最小项)

先记录一下一个找图片地址的好地方 进入NASA官网直接copy image address 也可以在google里面使用 但是可能无法成功

  • emoji kitchen use ps to scale down and save in png and then port to QQ
  • QQ music .first download music from the magic website and then open in the directory with QQ player. Note: when you download by qq you could easily get adapted in the app ! Good!
  • Post title:逻辑电路/c++
  • Post author:Winter
  • Create time:2023-10-11 20:15:48
  • Post link:https://spikeihg.github.io/2023/10/11/逻辑电路/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.