自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 (5)Unique Lock和Lazy Initialization

前面我们已经介绍了两种定义互斥锁的方式: (1)mu.lock() (2)std::lock_guard<std::mutex> locker(mu) 接着我们介绍第三种方式, (3)std::unique_lock<mutex> locker(mu,std::defer_lock); 其中参数std::defer_lock表明locker延迟锁定,在之后我们可以...

2018-07-14 15:29:46 193

原创 (8)使用可调用对象

这里讲解的是多线程的几种创建方式.class A{public: void f(int x,char c){} int operator()(int N){ return 0;}};void foo(int x){}int main(){ A a; std::thread t1(a,6);//传递a的拷贝给子线程 std::thr...

2018-07-09 16:12:46 214

原创 (7)Feature,Promise和async()

其实,这节课程中一开始的引入future的环节不是太清晰,反正只要知道使用了future, 在代码中可以省略mutex 和条件变量的使用,并且也保证了主线程在得到x的值的过程,一定是在子线程结束后发生.而这个代码段是为了得到从线程中返回值.#include <deque>#include <functional>#include <iostream>...

2018-07-09 16:01:41 719

原创 (6)条件变量

先列出这节课的例程代码.#include <deque>#include <functional>#include <iostream>#include <fstream>#include <thread>#include <string>#include <mutex>using names

2018-07-09 15:18:29 288

原创 (4)死锁

aha,什么是死锁,死锁又是如何产生的呢?来来,接着往下走…//这是一段产生了死锁的代码#include <thread>#include <iostream>#include <string>#include <mutex>#include <unistd.h>#include <fstream>us...

2018-07-09 10:11:04 179

原创 (3)数据竞争与互斥对象

这节课终于要解决之前的一个bug了,也就是数据竞争的问题,先看一下如下代码:#include <thread>#include <iostream>#include <string>using namespace std;void function_1(){ for(int i=0;i>-100;--i) cou...

2018-07-09 09:44:22 232

原创 (2)线程管理

一上来就用一段代码来开启这节课...#include <thread>#include <iostream>using namespace std;void function_1(){ cout << "Hello world!" << endl;}int main(int argc, char** argv){...

2018-07-08 22:59:51 101

原创 (1)课程介绍

之前一直想看一下多线程编程,但是迟迟没有去动手,直到之前参加一个比赛,碰见相关内容,这次无意间在网易云课堂上发现这个课程,这个系列的博客就当作自己学习的笔记,作为自己的再次巩固.废话不多说,直接上学习记录.并发编程包括两种方式,分别是多线程编程和多进程编程.多进程中,每一个进程都只有一个线程,进程间通信方式有文件,管道,消息队列等.另一种并发模型就是多线程,即一个进程中两个或两个以上的线程,线...

2018-07-08 22:13:04 129

转载 (2)静态成员变量和静态成员函数

恩,看见两个地址觉得还不错,先把博客地址记下。 静态成员变量 静态成员函数

2018-07-06 16:09:25 119

转载 (1)引用

引用就是为对象起了另外一个名字,通过符号&来定义引用类型。引用并不是一个对象,它仅仅只是为了和对象绑定在一起。#include <iostream>#include <stdio.h>using namespace std;int main(){ int value = 10; int &ref = value; pr...

2018-07-03 11:04:38 206

原创 8.、String to Integer (atoi)(字符串转整)

题目要求,就是实现一个atoi函数的功能,将字符串转换成整数。其中,这个题目难度不大,就是有些边界条件要考虑。 1、数据类型,这个题也要考虑变量的数据类型,因为输出整数的范围是[−2^31, 2^31 − 1]。并且,当转换结果超出了该范围,即当大于( 2^31 − 1)时,结果则为( 2^31 − 1);若小于(−2^31),则为(−2^31)。 2、在遇见有效数字之前,若出现‘-’,‘...

2018-07-01 16:59:23 1134

原创 7.、Reverse Integer(整数取反)

题目要求很简单,就是给定一个在[−2^31, 2^31 − 1]范围内的整数,对该整数取反。 比如, 输入=123, 输出=321。 输入=-123,输出=-321。 输入=120, 输出=21。这个题目在求解的时候,需要注意的是数据类型的选取,因为涉及到溢出,其次当输出结果产出范围后,结果要变为0。在编写代码的时候,因为忘记了移位符号和运算符的优先级顺序,卡了一下,刚好当天晚上在看...

2018-07-01 16:03:29 4349

原创 6、ZigZag Conversion(之字转换)

题目要求给定一个字符串,然后将其按顺序以之字排列,然后将字母串按行来输出,其中之子字符回路的行数由参数numRows控制。比如, example1: 输入 s= “PAYPALISHIRING”,numRows=3, 输出=”PAHNAPLSIIGYIR” P      A   

2018-06-30 20:18:36 191

原创 5、Longest Palindromic Substring(最长回文子字符串)

题目要求给定一个字符串s,然后找出该字符串s中最长的回文子字符串,s的长度不超过1000。比如, example1:输入=”babad”,输出=“bab”。 example2:输入=“abbd”, 输出=“bb”。这个题,我第一直觉就是用暴力求解,用两个索引,起始索引为i,i的最大值为len-maxlen,当剩余字符串长度小于过程中出现的最长回文的长度,则结束。然后就是,结束索引j...

2018-06-30 19:43:02 93

原创 4.、Median of Two Sorted Arrays(两个有序序列的中位数)

题目要求在给定两个长度分别为m和n的有序序列时,找出这两个序列合起后的中位数。并且要求时间复杂度为O(log(m+n))。首先,中位数的定义是,当序列长度为偶数时,中位数的值为序列中间两个数的均值;当序列为奇数时,中位数为正中间的数。当序列长度为n时,其值分别为(array[n/2]+array[n/2-1])/2、array[n/2]。为了达到时间复杂度的要求,故采用两个索引分别同时遍历两个序列...

2018-06-27 20:24:15 148

原创 3、Longest Substring Without Repeating Characters(最长不重复子串)

题目要求,给定一个string,求string中最长的不重复的子串长度。例如,给定“abcabcbb”时,最长的不重复子串为“abc",所以解为3。给定“bbbb”时,最长的不重复子串为“b",所以解为1。给定"pwwkew"时,最长的不重复子串为“wke",所以解为3。在解决如何判断是否出现开始重复字母时,利用一个数组来记录字符的出现与否,即利用字符的ascii码作为数组的索引。故数组的大小为2...

2018-06-27 19:48:05 112

原创 2、Add Two Numbers(两个数的求和)

这道题的题目意思很简单,就是求两个非负整数的和,只不过每一个数都是由链表表示,并且链表的数据元素的顺序,和整数的每一位数字的顺序是相反的,比如342,链表表示为2->4->3。因此,计算出的结果的链表存放元素的顺序也是反的。这里,我们只要同时遍历两个链表,然后将每一个元素相加,对每一位上的和进行取余,然后保留进位符,在下一个位置上进行相加。遍历两个链表后,最后还要判断一次进位符,如果不...

2018-06-22 21:24:54 2456

原创 1、Two Sum(两数之和)

1、这道题目比较简单,是求给定的数组nums中,找到其中两个不同数字相加为给定值target。然后将这两个数字的下标返回即可。直接通过暴力搜索,AC这道题。C语言:int* twoSum(int* nums, int numsSize, int target) { int *result = (int *)malloc(sizeof(int)*2); for(int i=0;i&l...

2018-06-22 21:07:59 272

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除