![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
HELLO_蓝猫
这个作者很懒,什么都没留下…
展开
-
关于C++中的虚拟继承的一些总结
1.为什么要引入虚拟继承虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下:class Aclass B1:public virtual A;class B2:public vi...转载 2019-10-22 14:27:41 · 286 阅读 · 0 评论 -
定时器设计
参考https://www.hifreud.com/2015/04/30/timer-design/https://zhuanlan.zhihu.com/p/38408679http://www.cppblog.com/expter/archive/2010/03/05/108977.aspxhttps://baijiahao.baidu.com/s?id=164682969779...原创 2019-10-20 14:07:20 · 582 阅读 · 0 评论 -
在main方法之前执行一段代码
class Solution {public: Solution() { cout << "first" << endl; }};Solution s;int main() { cout<<"main"<<endl; return 0;}firstmain看面经很有意思的一道题,如何在main方法之前执行一...原创 2019-05-09 18:06:05 · 329 阅读 · 0 评论 -
c++面试汇总(牛客)
作者:牛客网链接:https://www.zhihu.com/question/318246216/answer/641163138来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。牛客 问题加答案:https://www.nowcoder.com/tutorial/93/156e55e0579d4a678e857b34d572c278多数答案:https...转载 2019-05-09 17:59:04 · 1601 阅读 · 1 评论 -
读者写者问题
reader1 is reading,read 2pagesreader2 is reading,read 2pagesreader2 is reading,read 3pagesreader2 is overreader1 is reading,read 3pagesreader1 is overreader4 is reading,read 2pagesreader4 is r...原创 2019-05-08 16:39:15 · 404 阅读 · 0 评论 -
单生产者 多消费者模型
问题出处:https://blog.csdn.net/u010236550/article/details/12372319生产者消费者问题:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,所有生产者和消费者都是异步方式运行的,但...原创 2019-05-08 15:38:13 · 1684 阅读 · 0 评论 -
C++实现简易线程池
参考:https://blog.csdn.net/kid1ing/article/details/74512698//看这篇https://blog.csdn.net/u011388696/article/details/82555625//参考陈硕的https://blog.csdn.net/BJUT_bluecat/article/details/85633395https:/...原创 2019-04-25 17:58:03 · 314 阅读 · 0 评论 -
c++实现简易内存池
参考:https://blog.csdn.net/K346K346/article/details/49538975https://blog.csdn.net/xjtuse2014/article/details/52302083#comments提高c++性能的编程技术 https://blog.csdn.net/fengbingchun/article/details/844976...原创 2019-04-24 16:30:56 · 392 阅读 · 0 评论 -
void*用法
https://www.cnblogs.com/yuanyongbin/p/8058755.htmlC语言中的void 和 void * 总结1、void的作用 c语言中,void为“不确定类型”,不可以用void来声明变量。如:void a = 10;如果出现这样语句编译器会报错:variable or field ‘a’ declared void。 在C语言中void ...转载 2019-04-16 13:58:45 · 410 阅读 · 0 评论 -
C\C++static关键字的用法总结
原文:https://blog.csdn.net/magic_world_wow/article/details/81351049static关键字主要起隐藏作用static关键字在C\C++中都可以修饰内置类型变量、函数static修饰内置类型变量为静态变量:static修饰的内置类型变量分为静态全局变量和静态局部变量,静态变量内存分配在 .data段,生成的符号为local...转载 2019-04-12 17:42:47 · 112 阅读 · 0 评论 -
C++ STL: map自定义键值类型
https://blog.csdn.net/y109y/article/details/82901710map key值想用自定义类型的方法。重写<符号 bool operator <(const Node &n) const// 必须重写 不然map的key无法改变 { return val<n.val; }...转载 2019-03-31 16:35:28 · 455 阅读 · 0 评论 -
提高C++性能
一,提高C++性能1, I/O的开销很高,尽量减少cout,printf这种。2,函数调用也是考虑因素,短小的,频繁使用的函数内联。3,复制对象开销很高,最好传递引用,减少传值。4,char*指针开销小于string。5,指针型开销远远小于实型。6,对象的创建和销毁会造成性能损失,相对来说,继承对性能会造成影响。7,模版比继承提供性能更好,它把对类型的解析提前到编译期间...原创 2019-03-25 11:40:13 · 413 阅读 · 0 评论 -
c++多线程模拟银行排队
每一个窗口对应一个线程,还是存在一些关于并发的问题,用户都是随机数生成,无法模拟实际情况,互斥锁锁住之后,存在只有一个线程掌握资源的情况。试图解决方案,把互斥锁,条件变量全部封装到一个类,模拟单生产者,多消费者模型。或者修改成几个窗口,几个队列main.cpp//// main.cpp// 模拟银行排队//// Created by 蓝猫 on 2019/3/15./...原创 2019-05-08 01:15:30 · 1148 阅读 · 0 评论 -
c++11 原子操作实现自旋锁
参考:https://www.cnblogs.com/ittinybird/p/4830834.htmlhttps://blog.csdn.net/sharemyfree/article/details/47338001https://blog.csdn.net/qccz123456/article/details/81329261自旋锁是一种非阻塞锁,也就是说,如果某线程需要获...原创 2019-05-17 17:52:08 · 752 阅读 · 0 评论 -
Leetcode 1115. 交替打印FooBar
class FooBar {private: int n; std::mutex mutex_t; std::condition_variable cond; bool isfoo;public: FooBar(int n):isfoo(true){ this->n = n; } void fo...原创 2019-07-31 14:40:25 · 395 阅读 · 0 评论 -
Leetcode 1114. 按序打印
我们提供了一个类:public class Foo {public void one() { print("one"); }public void two() { print("two"); }public void three() { print("three"); }}三个不同的线程将会共用一个Foo实例。线程 A 将会调用 one() 方法线程 B 将会调...原创 2019-07-31 14:30:53 · 186 阅读 · 0 评论 -
move语义移动后的状态
https://blog.csdn.net/gg_18826075157/article/details/71889042移动之后的状态?如果要找出十分准确的答案,其实是挺麻烦的。C++11的标准类库的说法就是——“仍然有效,但状态不明”,实际上一般情况下为空,但并不能保证。以string为例说明。std::string t = "xmas", u;u = std::move(t)...转载 2019-07-30 09:54:11 · 169 阅读 · 0 评论 -
线程安全队列
//// main.cpp// threadsafe_queue//// Created by 蓝猫 on 2019/6/24.// Copyright © 2019年 蓝猫. All rights reserved.//#include <iostream>#include <queue>#include <mutex>#inc...原创 2019-06-24 18:45:39 · 234 阅读 · 0 评论 -
io
include <stdio.h>#include <unistd.h>#include <sys/time.h> int play_select(){ fd_set rfds; FD_ZERO(&rfds); FD_SET(STDIN_FILENO, &rfds); fd_set wfds; FD_ZERO(&...转载 2019-07-07 20:23:46 · 122 阅读 · 0 评论 -
虚函数表和内存布局
https://bbs.csdn.net/topics/280004030子类继承父类是否含有虚函数表派生类对象包含一个基类对象区域和派生类特有对象区域,基类是派生类的一部分。从这个意义上讲,派生类是包含虚表的,但是这个虚表是派生类对象中基类对象的那个部分,实际上,派生类对象和其内含的基类对象共享一个虚表,且虚表包含的是派生类对象的函数偏移,这就是为什么你无论用基类还是派生类指针,都调用派生...转载 2019-06-18 16:23:15 · 497 阅读 · 0 评论 -
define和const区别
https://www.jb51.net/article/139225.htmhttps://blog.csdn.net/weibo1230123/article/details/81981384用#define MAX 255定义的常量是没有类型的,所给出的是一个立即数,编译器只是把所定义的常量值与所定义的常量的名字联系起来,define所定义的宏变量在预处理的时候进行替换,在程序中使用...转载 2019-06-12 09:44:17 · 1091 阅读 · 0 评论 -
Leetcode 284. Peeking Iterator
Given an Iterator class interface with methods:next()andhasNext(), design and implement a PeekingIterator that support thepeek()operation -- it essentially peek() at the element that will be retu...原创 2019-06-17 17:21:23 · 165 阅读 · 0 评论 -
strcpy和memcpy
参考:https://www.cnblogs.com/huanzxj/p/3522595.html#include <iostream>void *stringcpy(char *str1, const char *str2){ if (str1 == NULL || str2 == NULL) { return NULL; } char *temp = str1...原创 2019-06-17 10:54:46 · 241 阅读 · 0 评论 -
c++ 实现docker容器(namespace隔离)
参考https://www.cnblogs.com/luosongchao/p/3680312.htmlhttps://blog.csdn.net/yangkuanqaz85988/article/details/52403726进程栈https://blog.csdn.net/hty46565/article/details/79934205namespace参考实验楼...原创 2019-06-16 23:57:37 · 2358 阅读 · 4 评论 -
C++11 条件变量
参考:https://www.cnblogs.com/bigben0123/p/3753148.html 条件变量(Condition Variable)的一般用法是:线程 A 等待某个条件并挂起,直到线程 B 设置了这个条件,并通知条件变量,然后线程 A 被唤醒。经典的「生产者-消费者」问题就可以用条件变量来解决。这里等待的线程可以是多个,通知线程可以选择一次通知一个(notify...原创 2019-01-03 19:06:56 · 287 阅读 · 0 评论 -
c++用类成员函数作为线程函数
参考:https://www.cnblogs.com/rangozhang/p/4468754.htmlhttps://blog.csdn.net/YuHengZuo/article/details/78565723当我们创建线程的时候 线程处理函数如果是类里面的成员函数会报错,需要以下处理。当需要利用类成员函数( MyClass::thread_func )来创建子线程时,需如下...原创 2018-12-22 12:19:10 · 6715 阅读 · 0 评论 -
C++中string、char *、char[]的转换
原帖:https://www.cnblogs.com/Pillar/p/4206452.html头段时间有人问过我这个问题,可是我一点头绪都没有,直接说不会。现在从网上找了点资料,看了看,知道点东西了。 一、string转char*。 主要有三种方法可以将str转换为char*类型,分别是:data(); c_str(); copy(); 1.data()方法,如:st...转载 2018-11-19 11:02:16 · 118 阅读 · 0 评论 -
C++异常处理
参考http://www.runoob.com/cplusplus/cpp-exceptions-handling.html异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。throw: 当问题出现时,程序会抛出一个异常。这是通过使用...原创 2018-11-05 20:01:04 · 131 阅读 · 0 评论 -
fork创建多个子进程
利用fork创建多个子进程,一个程序中的父进程是同一个。//// main.cpp// fork//// Created by 蓝猫 on 2018/10/29.// Copyright © 2018年 蓝猫. All rights reserved.//#include <iostream>#include <sys/types.h>...原创 2018-10-29 23:40:48 · 2250 阅读 · 0 评论 -
easyx
// 字符串转大文子.cpp : 定义控制台应用程序的入口点。//// output 图片.cpp : 定义控制台应用程序的入口点。//// "void __cdecl SaveDotWord(char (*)[25])" (? SaveDotWord@@YAXPAY0BJ@D@Z),该符号在函数 _main 中被引用 output 图片 C : \Users\bluecat code\...原创 2018-08-30 21:52:17 · 628 阅读 · 0 评论 -
烟火和流星雨
// 哈哈哈.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream> #include<conio.h> #include<windows.h> #include<time.h> #include<stdio.h> using namespace std;...转载 2018-08-30 20:30:52 · 334 阅读 · 0 评论 -
浅拷贝与深拷贝的区别
简单的来说就是,在有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存,采用深拷贝的情况下,释放内存的时候就不会出现在浅拷贝时重复释放同一内存的错误!我列举一个例子来说吧:你正在编写C++程序中有时用到,操作符的重载。最能体现深层拷贝与浅层拷贝的,就是‘=’的重载。看下面一个简单的程序:class string{...转载 2018-07-05 10:08:53 · 121 阅读 · 0 评论 -
c++11 互斥锁
参考:https://blog.csdn.net/krais_wk/article/details/81095899看完linux c下的多线程编程之后,发现c++11引入了多线程的标准库,可以支持跨平台的开发,仿照写了一个互斥锁的程序。提示!:把类成员函数作为线程函数时,第一个参数是成员函数,第二个参数是类对象,剩下的是函数参数。另外,我遇到最麻烦的,如果类声明了构造函数,哪怕什么都没有...原创 2018-12-25 15:55:33 · 974 阅读 · 0 评论 -
c++ move的作用和用法
参考http://www.cnblogs.com/taiyang-li/p/5894607.htmlstd::move 会无条件将自己的参数转换为右值。在对象拷贝的时候,在运行时,它们不会产生一行代码, 可以减少资源创建和释放。//// main.cpp// move//// Created by 蓝猫 on 2019/1/3.// Copyright © 2019年 ...原创 2019-01-03 11:26:15 · 14156 阅读 · 2 评论 -
c++ STL容器 自定义类型的查找
leetcode的一道题,想使用map<A,B>class A{public: bool operator <(const A & b)const { //需要实现,因为map要用到< return true; } };key 需要支持比较操作, 需要为A重载"<" 操作符....原创 2018-06-15 16:40:53 · 1247 阅读 · 0 评论