
c++语法
记录个人学习过程中遇到的C/C++语法等知识,仅供记录,分享
alanfengliu
不学无以致远
展开
-
并发和多线程(六) 单例设计模式共享数据分析、解决,call_once
我的实践:#include <iostream>#include <thread>#include <list>#include <mutex>using namespace std;mutex my_mutex;once_flag g_flag;//1.只有new但是没有回收内存class MyCAS//这是一个单例类{ static void CreatInstance() { chrono::m原创 2020-12-28 17:13:05 · 222 阅读 · 0 评论 -
并发和多线程(二) 线程启动、结束,创建线程多法、join,detach
第二节 线程启动、结束,创建线程多法、join,detach一、范例演示线程运行的开始程序运行起来,生成一个进程,该进程所属的主线程开始自动运行;当主线程从main()函数返回,则整个进程执行完毕 主线程从main()开始执行,那么我们自己创建的线程,也需要从一个函数开始运行(初始函数),一旦这个函数运行完毕,线程也结束运行 整个进程是否执行完毕的标志是:主线程是否执行完,如果主线程执行完毕了,就代表整个进程执行完毕了,此时如果其他子线程还没有执行完,也会被强行终止【此条有例外,以后会解释】原创 2020-09-28 09:37:49 · 136 阅读 · 0 评论 -
并发和多线程(一)并发、进程、线程概念
一、并发、进程、线程的基本概念和综述1.1 并发两个或者更多的任务(独立的活动)同时发生(进行):一个程序同时执行多个独立的任务; 以往计算机,单核cpu(中央处理器):某一个时刻只能执行一个任务,由操作系统调度,每秒钟进行多次所谓的“任务切换”。并发的假象(不是真正的并发),切换(上下文切换)时要保存变量的状态、执行进度等,存在时间开销; 随着硬件发展,出现了多处理器计算机:用于服务器和高性能计算领域。台式机:在一块芯片上有多核(一个CPU内有多个运算核心,对于操作系统来说,每个核心都是作.原创 2020-09-26 16:58:50 · 1235 阅读 · 0 评论 -
并发和多线程(五) unique_lock(类模板)详解
unique_lock(类模板)详解我的实践#include <iostream>#include <thread>#include <list>#include <mutex>#define N 1000using namespace std ;class T {private: list<int> lst; mutex my_mutex; mutex my_mutex1; mute原创 2020-12-25 17:11:48 · 324 阅读 · 1 评论 -
并发和多线(四) 创建多个线程、数据共享问题分析
互斥量概念、用法、死锁演示及解决详解我的实践#include <iostream>#include <thread>#include <list>#include <mutex>#define N 1000using namespace std;class T {private: list<int> lst; mutex my_mutex; mutex my_mutex1; mutex原创 2020-12-24 16:33:52 · 173 阅读 · 1 评论 -
并发和多线程(三)线程传参详解,detach()大坑,成员函数做线程函数
线程传参详解,detach()大坑,成员函数做线程函数一、传递临时对象作为线程参数1.1要避免的陷阱1:#include <iostream>#include <thread>using namespace std;void myPrint(const int &i, char* pmybuf){ //如果线程从主线程detach了 //i不是mvar真正的引用,实际上值传递,即使主线程运行完毕了,子线程用i仍然是安全的,但仍不推荐传递引用 /.原创 2020-09-28 14:28:43 · 407 阅读 · 0 评论 -
C++中const用于函数重载的用法
C++中const用于函数重载常成员函数和非常成员函数之间的重载首先先回忆一下常成员函数声明:<类型标志符>函数名(参数表)const;说明:(1)const是函数类型的一部分,在实现部分也要带该关键字。(2)const关键字可以用于对重载函数的区分。(3)常成员函数不能更新类的成员变量,也不能调用该类中没有用const修饰的成员函数,只能调用常成员函数。(4)非常量对象也可以调用常成员函数,但是如果有重载的非常成员函数则会调用非常成员函数例子1,成员函.原创 2020-09-28 11:26:27 · 2775 阅读 · 1 评论 -
面经-C语言基础(二)
目录C 语言中全局变量、局部变量、函数参数个是在什么时候分配内存空间const符号表机制const的作用大小端模式关键字volatile有什么含意? 并给出三个不同的例子。#include 和#include “filename.h” 有什么区别?const 有什么用途?(请至少说明两种)如何引用一个已经定义过的全局变量?带参宏与带参函数的区别(至少说出5点)?数组名和指针的区别:关键字inline必须与函数定义放在一起才能使函数成为内联#if...原创 2020-09-28 10:56:27 · 1508 阅读 · 0 评论 -
面经-C语言基础(一)
目录: 虚函数和纯虚函数 堆变量和栈变量 C/C++堆和栈的区别 逻辑地址和物理地址和虚拟内存 sizeof和strlen的区别: 如何判断new和malloc是否成功: 内存申请失败怎么办 C和C++的区别,C++11的新特性 什么是内存溢出/内存泄漏 c++中内存的五大区 内存的分配方式有哪几种 智能指针 野指针 static关键字 C++11中的四种类型转换 深入理解数据库索引采用B树和B+树的原因 顶层指针和底层指针 const 与 #define 的比较 ,原创 2020-09-28 10:48:20 · 4218 阅读 · 0 评论 -
C++单例模式的实现
首先单例要实现几个基本要求:1.全局只有一个实例:采用static特性可以实现。同时禁止用户自己声明并定义实例:把构造函数设为private。2.禁止复制和拷贝:拷贝构造函数和重载赋值函数不允许使用。3.线程安全的4.用户通过接口获取实例:使用static类成员函数/*************有缺陷的懒汉式**************1.线程安全问题,没有互斥2.内存泄漏 没有没有调用析构函数。************* *************/cl原创 2020-09-04 16:09:34 · 325 阅读 · 0 评论 -
const修饰函数参数时的重载
const修饰成员函数时的重载:根本原则是表示的参数是变量还是常量。void fun(const int i) { cout << "fun(const int) called "; } void fun(int i) { cout << "fun(int ) called " ; } int main() { const int i = 10; fun(i); return 0; }转载 2020-06-12 09:34:05 · 623 阅读 · 0 评论 -
背包九讲问题记录
背包九讲01背包问题01背包问题题目有N件物品和一个容量为V的背包。第iii件物品的费用是w[i]w[i]w[i],价值是v[i],求将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][j]f[i][j]f[i][j]表示前iii件物品恰放入一个容量为jjj的背包可以获得的最大价值。则其状态转移方程便是:f[i][j]=max(f[i−1][j],f[i−1][j−w[i]]+v[i])f[i][j]=ma转载 2020-05-30 11:15:01 · 170 阅读 · 0 评论 -
关于for循环有多个条件时的书写规范
关于for循环有多个条件时的书写规范本人在做剑指offer(04)二维数组中查找的时候,用了for循环判断是否在数组中存在目标值。但因为存在两个条件所以用逗号隔开,问题就出在这个逗号了!!!(代码第9行)class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matr...原创 2020-04-25 20:55:21 · 4178 阅读 · 0 评论 -
C和C++中定义结构体struct的用法和区别
C/C++中struct的用法和区别定义方法:区别:原创 2020-04-24 11:05:56 · 1164 阅读 · 0 评论 -
关于getline和getchar注意的细节
关于getline和getchar注意的细节转自 :link#include#include<string.h>#includeusing namespace std;int main(void){string str;int n; cin >> n;getchar();while (n–) {getline(cin, str);cout <...转载 2020-03-26 09:33:52 · 470 阅读 · 0 评论