
C++
文章平均质量分 79
canger_
Linux C/C++、golang、云原生
展开
-
Linux多线程间同步
竞争与同步当多个线程同时访问其所共享的进程资源时,需要相互协调,以防止出现数据不一致、不完整的问题。这就需要线程同步。一、信号量信号量是一个计数器,用于控制访问有限共享资源的线程数。头文件:semaphore.h int sem_init (sem_t* sem, int pshared,unsigned int value);功能:创建信号量sem - 信号量ID,输出。pshared - 一般取0,表示调用进程的信号量。 非0表示该信号量可以共享内存的方式, 为多个进程所共享原创 2021-03-13 00:24:56 · 527 阅读 · 0 评论 -
C++11中类的noncopyable(=default和=delete函数)
在C++11中,如果想要禁止类的拷贝行为只需要把相应的函数设为 = delete即可,参见标准库的std::unique_ptrunique_ptr (const unique_ptr&) = delete;unique_ptr& operator= (const unique_ptr&) = delete;对于普通的类,如果不去查看类的成员函数声明,我们是无法...原创 2019-04-21 16:54:37 · 4634 阅读 · 2 评论 -
关于ios::sync_with_stdio(false);和 cin.tie(nullptr);
今天在leetcode上刷题时,发现题目高效率解决的源码中有很多都有以下这段static const auto io_sync_off = [](){ // turn off sync std::ios::sync_with_stdio(false); // untie in/out streams std::cin.tie(nullptr); retu...原创 2019-01-04 17:32:18 · 7195 阅读 · 1 评论 -
C++进阶 ——const关键字
01.尽量以const,enum,inline代替#define也可以这么说“宁可以编译器替换预处理器”。首先这里有个符号表的概念:在计算机科学中,符号表是一种用于语言翻译器(例如编译器和解释器)中的数据结构。在符号表中,程序源代码中的每个标识符都和它的声明或使用信息绑定在一起,比如其数据类型、作用域以及内存地址。那么当你使用#define定义一个记号名称时,如果此记号从未被编译器所看见...原创 2018-12-05 22:31:24 · 351 阅读 · 0 评论 -
浅谈C++模板与泛型编程
一、如何进行泛型编程:C/C++是一种静态编程语言,必须需要把代码翻译成可执行的二进制可执行程序然后在运行,一旦编译好之后就不能再变了(数据类型确定后就无法更改,因此要为每一种数据类型编写一份算法) + C语言中的快速排序:void qsort(void *base, size_t nmemb, size_t size,int(*compar)(const void *, const...原创 2018-08-23 16:39:36 · 961 阅读 · 0 评论 -
C++引用总结
引用:C++新增了一种复合类型——引用变量。引用是已定义的变量的别名,新名字与旧名字有相同的值和内存地址。创建引用变量创建引用格式:type &new_varname = old_var;(调用引用必须要初始化)int old;int &newname;newname = old;//这种方式是不行的引用不光可以引用标识符(变量等),也可以引用立即...原创 2018-08-08 23:59:43 · 622 阅读 · 0 评论 -
C++ 重载运算符
一、运算符重载运算符重载是一种形式的C++多态。 在C++中,编译器有能力把一个由数据、对象和操作符共同组成的表达式,解释为对一个全局或成员函数的调用。该全局或成员函数被称为操作符函数,通过重定义操作符函数,可以实现针对自定义类型(结构,类)的运算法则,并使之与内置类型一样参与各种表达式。 重载运算符可使代码看起来更加自然。要重载运算符,需使用被称为运算符函数的特殊函数形式:o...原创 2018-08-13 16:10:34 · 1550 阅读 · 0 评论 -
C++实现一个老鼠走迷宫游戏
代码由于C++面向对象的编程方式,注重于数据的处理,所以一个类的设计显得尤为重要。 这里我就设计了一个迷宫类,其属性有迷宫大小,空格(可行路径)的数目,入口坐标,出口坐标,以及主角老鼠的坐标,以及bool变量pass,表示判断此次生成的迷宫从入口到出口是否有通关路径。 private里的函数有构造迷宫(通过rand系函数随机生成路径,’#’代表路障,’ ‘代表可通过路径,’*’代表老鼠...原创 2018-08-07 22:04:49 · 7224 阅读 · 7 评论 -
C++的简介、起源与发展
1.C++简介:C++融合了3种不同的编程方式:C语言代表的过程性语言、C++在C语言基础上添加的类代表的面向对象语言、C++模板支持的泛型编程。2.C++简史:2.1 C语言编程原理:由于C++在C语言的基础上移植了新的编程理念,所以我们先回顾一下C语言所遵循的旧的理念。一般来说,计算机语言要处理两个概念——数据和算法。数据是程序使用和处理的信息,而算法是程序使用的方法。C语言与...原创 2018-08-07 20:48:16 · 6038 阅读 · 0 评论 -
C++ 类总结(构造析构函数、初始化列表、this指针、静态成员和常对象)
一、类(class)(1)类的定义定义类:一般来说,类规范由两个部分组成。类声明:以数据成员的方式描述数据部分,以成员函数的方式描述公共接口类方法定义:描述如何实现类成员函数1.C++中的class与struct一样,是一种复合数据类型2.class里面用变量来表达属性,用函数表示行为3.在C++中class与struct几乎没有区别,struct中默认访问属性是pu...原创 2018-08-09 19:49:59 · 795 阅读 · 0 评论 -
C++入门推荐与介绍
入门推荐《C++ Primer》这本书,简直相当于一本字典,里面内容很详细。C++是C的超集,是在C语言基础上开发的集面向对象编程、泛型编程和过程化编程于一体的编程语言。C++在C语言的基础上新增了很多特性,包括:类和对象;继承;多态、虚函数和RTTI(运行阶段类型识别);函数重载;引用变量;泛型编程(由模板和标准模板库STL提供);处理错误条件的异常机制;管理函数、类和变量名的名称空间。...原创 2018-07-10 17:18:15 · 516 阅读 · 0 评论