
C/C++基础
文章平均质量分 92
C/C++的基础练习
消失男孩
这个作者很懒,什么都没留下…
展开
-
[C++]实现memcpy
转载于Vector_PX:C++ memcpy 实现void memcpy(void *pDst ,void *pSrc ,size_t length){ char *dst=static_cast<char*>(pDst); //转换成char* char *src=static_cast<char*>(pSrc); if ((src==nullptr)||(dst==nullptr)) //判断是否为野指针 { /* code */ return原创 2020-09-25 14:17:30 · 1024 阅读 · 0 评论 -
[C++]字节9-20笔试题
1、字符串最短循环子串输入一个字符串,判断其是否完全循环,若是循环的,则输出最短的循环子串,否则输出自身。例1:输入:abababab输出:ab备注:abababab以ab为最小串循环,故输出ab。abcabcab,这种不是完全循环,故输出自身abcabcab。2、简单计算器张三需要找个工具人来帮忙计算数学题,这样的工具人太难找了,希望你编写一个简单的计算器,因为张三还是小学生,所以只需要非常少的功能。加法,1+2=3减法,1-2=-1乘法,1*2=2幂(就是求几次方),1原创 2020-09-22 14:57:44 · 517 阅读 · 0 评论 -
[C++]十进制转换为任意进制
//最大支持36进制#include<iostream>#include<string>using namespace std;char digit[] = { '0','1','2','3', '4','5', '6','7', '8','9', 'A','B','C','D', 'E','F', 'G','H', 'I','J', 'K','L','M','N', 'O','P', 'Q','R', 'S','T',原创 2020-09-22 14:15:55 · 795 阅读 · 0 评论 -
[C++]工厂模式
1、简单工厂模式enum CTYPE {COREA, COREB}; class SingleCore { public: virtual void Show() = 0;}; //单核A class SingleCoreA: public SingleCore { public: void Show() { cout<<"SingleCore A"<<endl; } }; //单核B class Singl原创 2020-09-17 16:36:13 · 140 阅读 · 0 评论 -
[C++]三个线程交替打印ABC
#include<iostream>#include<thread>#include<mutex>#include<condition_variable>using namespace std;mutex mymutex;condition_variable cv;int flag=0;void printa(){ unique_lock<mutex> lk(mymutex); int count=0;原创 2020-09-17 16:10:13 · 648 阅读 · 0 评论 -
[C++]实现mutex/互斥锁
思路:实现mutex最重要的就是实现它的lock()方法和unlock()方法。我们保存一个全局变量flag,flag=1表明该锁已经锁住,flag=0表明锁没有锁住。实现lock()时,使用一个while循环不断检测flag是否等于1,如果等于1就一直循环。然后将flag设置为1;unlock()方法就将flag置为0;关键点:假设thread A是第一个运行到此的线程,那么它得到的mutex->flag就肯定是0,于是它继续跳出循环往下运行,希望通过下面的mutex->flag =原创 2020-09-17 16:02:08 · 1573 阅读 · 1 评论 -
[C++]实现一个哈希表
using namespace std; class Hash { int N; // 哈希表的表长 // 指向对应存储下标的指针。 list<int> *table; public: Hash(int V); int hashFunction(int x) { return (x % N); } void insertKey(int x); void deleteKey原创 2020-09-17 14:14:47 · 472 阅读 · 0 评论 -
[C++]多线程队列实现
1、多线程队列实现void initSrand() //微秒级随机种子{ LARGE_INTEGER start; QueryPerformanceCounter(&start); srand(unsigned(start.LowPart));}void initSrand1() //毫秒级随机种子{ struct timeb tb; ftime(&tb); srand(unsigned(tb.millitm));}int cap=10;deque<原创 2020-09-08 23:49:38 · 589 阅读 · 0 评论 -
[C++]实现智能指针
template <class T> class SmartPointer {private: unsigned * ref_count; //应用计数值 T * ref; //普通指针public: //普通构造函数, 设定T * ptr的值,并将引用计数设为1 SmartPointer(T * ptr) { ref = ptr; ref_count = new unsigned; *ref_count = 1; } //原创 2020-09-06 18:23:00 · 187 阅读 · 0 评论 -
[C/C++]strcpy,++i,i++的实现
1、strcpy#include < cassert>void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。char * strcpy(char *dst,const char *src) //[1] 源字符串参数用const修饰,防止修改源字符串。{ assert(dst != NULL &&am原创 2020-09-04 18:50:49 · 176 阅读 · 0 评论 -
[C/C++]华为8-19笔试题
1、逆时针遍历+报数M*N的矩阵,从(0,0)开始,先从顺时针从最外围走到原点,再从里面一层继续顺时针兜圈,直至走完//// ->->->->->->// | |// ^ v// | |// <-<-<-<-<-<-v//每个元素从1开始编号,若编号的个位数为7,十位数为奇数,则被挑选出来原创 2020-09-01 15:45:30 · 333 阅读 · 0 评论 -
[C/C++]七大排序算法
1、希尔排序2、归并排序3、堆排序4、快速排序5、直接插入排序6、冒泡排序7、选择排序原创 2020-09-01 14:54:52 · 2853 阅读 · 0 评论 -
[C/C++]虚函数
1、虚函数原创 2020-09-01 14:41:46 · 116 阅读 · 0 评论 -
[C/C++]生产者消费者模型/单例模式/多线程死锁
1、生产者消费者模型2、单例模式原创 2020-09-01 14:30:51 · 307 阅读 · 0 评论 -
[C/C++]二分查找专题/最后一个小于等于目标值target的数/第一个大于等于目标值target的数
二分查找专题查找有序数组中(1)某一个数(2)最后一个小于目标值target的数(3)最后一个小于等于目标值target的数(3)第一个大于目标值target的数(5)第一个大于等于目标值target的数采用二分查找,返回该数的索引,没有的话返回-10(non_exit)代码:(1)查找某一个数//二分查找某个数int binarySearchOne(vector<int> vec, int target){ int l = 0, r = vec.size() - 1;原创 2020-08-28 13:44:36 · 6371 阅读 · 1 评论 -
[C/C++]K路归并/合并k个有序数组/合并K个升序链表
K路归并 O(nlogk)假定有k个有序数组,每个数组中含有n个元素,您的任务是将它们合并为单独的一个有序数组,该数组共有kn个元素。设计和实现 一个有效的分治算法解决k-路合并操作问题,并分析时间复杂度。代码:#include <iostream>#include <vector>using namespace std;vector<int> mergeTowArrays(vector<int>A,vector<int>B){原创 2020-08-26 10:36:49 · 2335 阅读 · 1 评论 -
[C/C++]回溯法专题/组合总和Ⅰ/Ⅱ/Ⅲ
回溯法专题39. 组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]示例 2:输入:candidates = [2,3,5],原创 2020-08-22 23:22:15 · 565 阅读 · 0 评论 -
[C/C++]零碎知识点
1. 键盘输入(1)get方法:char name[50];cin.get(name,50);cin.get();(2)getline方法:string s;getline(cin,s);(3)cin:string s;cin>>s;2. 子字符串函数string s="abcdef", s1;s1=s.substr(1,2); //substr,而不是subStr3. 字符数组char [] 与字符串string 相互转换://char [] -&g原创 2020-08-01 00:30:37 · 397 阅读 · 0 评论 -
[C/C++]二叉树基础
二叉树遍历与恢复原创 2020-07-29 17:11:53 · 475 阅读 · 0 评论 -
[C/C++]背包问题
问题1:0-1背包问题。给定 nnn 个重量为 { w1w_{1}w1, w2w_{2}w2,…, wnw_{n}wn },价值 { v1v_{1}v1, v2v_{2}v2,…, vnv_{n}vn }的物品,给定最大载重 CCC 的背包,每件物品最多装一件,要求背包中的物品价值最大。0-1表示每件物品最多使用一次。思路:我们使用 f(i,c)f(i, c)f(i,c) 表示背包的载量为 ccc,装入 iii 个物品时,包内的价值。基于递归的思想,对于f(i,c)f(i, c)f(i原创 2020-07-25 21:11:06 · 262 阅读 · 0 评论 -
[C/C++]C++多线程入门实例讲解
题目:三个线程,两个线程分别生成一个随机数,第三个线程计算和。思路:熟悉C++多线程的用法以及互斥锁的使用。设置微秒级别的随机数种子。不然产生的两个随机数一样。代码:#include<iostream>#include<windows.h>#include<sys/timeb.h> #include<thread>#include<mutex>using namespace std;int a, b; //原创 2020-07-15 12:47:20 · 244 阅读 · 0 评论 -
[C/C++]Linux多线程入门实例讲解
介绍Linux系统下,利用C/C++多线程的编写。1 创建线程#include<pthread.h>int pthread_create( pthread_t *restrict thread, /*线程id*/ const pthread_attr_t *restrict attr, /*线程属性,默认可置为NULL,表示线程属性取缺省值*/ void *(*start_routine)(void*), /*线程入口函数*/ void *restrict a转载 2020-07-12 21:22:04 · 160 阅读 · 0 评论 -
[C/C++]Windows多线程入门实例讲解
介绍windows系统下,利用C/C++多线程的编写。1 创建线程HANDLE CreateThread( //windows创建线程的API函数LPSECURITY_ATTRIBUTES lpThreadAttributes,//SD:线程安全相关的属性,常置为NULLSIZE_T dwStackSize,//initialstacksize:新线程的初始化栈的大小,可设置为0LPTHREAD_START_ROUTINE lpStartAddress,//threadfunction:被线程转载 2020-07-12 21:00:58 · 812 阅读 · 0 评论