![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 93
Johnsonjjj
这个作者很懒,什么都没留下…
展开
-
关于多功能单元流水线的延迟(latency)与启动间隔(Initiation interval)
前言因为前段时间在写Intel Intrinsics, 看到latency和Throughput(CPI)一直不太理解。直到今天刚好看到了《计算机体系结构——量化研究方法》中关于MIPS中多功能单元(长延迟)流水线的介绍,才发现两者好像有一定的关系。因此本篇博客主要是我对MIPS中多功能单元(长延迟)流水线中的latency和Initiation interval的理解,以及简单谈一谈它们与指令latency、Throughput的关系。正文《计算机体系结构——量化研究方法》中的MIPS多功能单元流水原创 2020-11-18 23:07:32 · 4702 阅读 · 2 评论 -
C++ STL 迭代器Iterator、五种迭代器类别
前言最近在看《STL源码剖析》,并且也跟着在实现algorithm.h这个头文件。里面的算法基本都是对迭代器所指向的容器区间内的元素做操作,因此这些算法的泛型模板参数基本都有迭代器类型。针对不同的算法,对迭代器类型的要求也不同,本篇博客我就简单介绍一下C++中的五种迭代器类别。五种迭代器类别的关系首先介绍五种迭代器类别:输入迭代器input iterator输出迭代器output iterator前向迭代器forward iterator双向迭代器bidirectional iterator原创 2020-08-04 11:43:10 · 5669 阅读 · 3 评论 -
STL源码剖析——copy函数
前言最近在看《STL 源码剖析》,恰好看到copy函数这里。书上写的这个函数比较复杂,因为涉及到比较多提高效率的方法。因此我这篇博客就当做个简单的记录吧。copy函数的原型如下:template<class InputIterator, class OutputIterator> inline OutputIterator copy( InputIterator first, InputIterator last, OutputIte原创 2020-08-02 13:32:38 · 1187 阅读 · 0 评论 -
C与C++的内存分布
前言关于C与C++的内存分布这个,我一直很迷糊,这次决定写一篇博客来记录一下。参考博客为:[http://harlon.org/2018/04/21/cpluscplusmemory/]C程序内存布局C程序的内存空间布局如上图所示,分为内核空间和用户空间。内核空间主要包括一些进程相关的信息等,用户空间就是一些与程序本身相关的信息。用户空间主要分为以下几个部分:文本段(Text)数据段(Data)BSS段堆(Heap)栈(Stack)文本段(Text)分成 RO DATA 与原创 2020-06-30 22:45:43 · 403 阅读 · 0 评论 -
APUE(Unix 环境高级编程)——守护进程
今天补了一下APUE的13章,守护进程部分。这里简单记录一下,当个笔记吧。我的理解:守护进程就是后台进程,没有控制终端,所以无法与用户进行交互,就只是在后台默默执行。守护进程的实现步骤使用umask将文件模式创建屏蔽字设置为一个已知值。因为守护进程是一个子进程,他会继承父进程的文件模式创建屏蔽字,所以本身它是一个不确定的值。我们需要为守护进程设置合适的值。文件模式创建屏蔽字用于决定创建新文件或新目录时,新文件或新目录的默认访问权限。需要调用fork,来产生子进程,然后父进程调用exit结束。为什么原创 2020-06-29 23:38:34 · 284 阅读 · 0 评论 -
C++ 模板函数与分离编译问题
前言今天在写一个模板类的时候,涉及到模板类的成员函数定义。按一般的情况来说,类的成员函数的声明是放在头文件(.h)中,而成员函数的定义是放在相应的源文件(.cpp)中。在调用函数时,编译器只需要掌握函数的声明,具体的定义可以到所链接进来的源文件产生的目标文件(.o)中寻找。所以我写模板类的时候也照着这个原则做了,结果运行的时候报错了。接下来就来简单分析一下原因和解决方案。问题描述首先有一个自己写的模板类,类定义写在TreeNode.h头文件中,成员函数在头文件中只有声明:#ifndef STUDEN原创 2020-06-22 17:38:00 · 906 阅读 · 0 评论 -
C++ const成员函数小记
前言今天在看《STL源码解析》并仿写queue时,遇到一个我经常会混淆的问题,如下:template <class T, deque<T> >class queue { ……public: // 非const成员函数,返回数据的引用 reference front() { return c.front(); } // const成员函数,返回数据的常量引用 const_reference front() const { return c.front(); }原创 2020-06-16 23:42:33 · 184 阅读 · 0 评论 -
Unix 环境高级编程(APUE) system函数和sleep函数简单解析
前言最近在看《Unix 高级环境编程》的第十章,内容主要是与信号相关的概述和API。在看到章末的时候,有两个函数system()和sleep()的实现让我感觉比较困惑,并且在函数的内部实现中也使用了很多前面与信号相关的API,所以我觉得有必要好好实现一下这两个函数。于是我就照着书上的代码重新实现了一遍,并在代码中加入了相关的注释,算是记录一下我的个人理解吧。system()函数函数功能sy...原创 2020-03-26 01:13:27 · 596 阅读 · 2 评论 -
C++ 头文件.h 和 源文件.cpp 以及多重定义(multiple definition)
前言之前虽然学过C++,但是都是零零散散看的,很多特性,尤其是C++ 11的特性我都不知道。因此最近在看C++ primer,算是系统地过一遍C++吧。在差不多看完C++ primer之后,对C++有了更深的理解,我才发现C++真是一门很有魅力的语言。虽然控制底层的东西很繁琐,但是也给了程序员一个接触底层的机会。在写书上的代码时,我又遇到了一个刚入门时反复遇到的问题:头文件(.h)和源文件(....原创 2020-02-19 00:45:10 · 2739 阅读 · 0 评论 -
C++类型转换——const_cast,static_cast,reinterpret_cast,dynamic_cast转换
前言最近有时间就会看一看C++ primer,快速过一遍C++,因为感觉自己都是零零碎碎地学C++,没有系统地看过。今天刚好看到第四章类型转换,发现之前一直没有认真了解过C++的类型转换,只会用万能的括号强制转换法。所以今天这篇博客就当一个学习记录。新的类型转换有四种,const_cast,static_cast,reinterpret_cast,dynamic_cast。今天先讲三种,dyn...原创 2020-01-01 20:29:45 · 453 阅读 · 0 评论 -
C++如何正确地在类中初始化vector成员变量(转载)
转载自:https://blog.csdn.net/greenlight_74110/article/details/89137520错误的方法:class Foo(){public: // 这两种方法都会报错 vector<string> name(5); vector<int> val(5,0);}正确的方法:C++ 11...转载 2019-10-25 16:03:01 · 6701 阅读 · 0 评论