算法(一)
算法汇总介绍常用的算法 二分查找有三个关键量,right、left、middle;middle = (right - left)>>1,其中>>为右移运算符,将right - left结果的二进制位向右移一位,>>n右移n位,举个例子 8 - 4 = 4,4的二进制位为0100,右移一位变为0010,代表十进制2。 7 - 2 = 5,5的二进制位为0101,右移一位变为0010,代表十进制2。可以看出,右移运算符的作用是将两数相减并向下取整得到结果为什么要用右移运算符而不用/2? 右移运算 >> 通常比除法 / 更快,因为位运算是底层硬件直接支持的。 1234567891011121314151617int search(vector<int>& nums, int target) { int left = 0; int right = nums.size() - 1; while (right...
C++Practise
基本语法auto:在C++中,auto可以自动推导类型。12345#include <vector>std::vector <int> v;//有两种方式可以遍历STL容器- for (std::vector::iterator it = v.begin();it!=v.end();it++)- for (auto vtest : v) &为引用,加&与否取决于是否要修改原值或避免拷贝 需要修改并输出修改后的值 123456789101112131415#include <iostream>#include <vector>std::vector <int> v{0,1,2,3,4,5};int main(){ for (auto &v1:v) { v1 = v1+1; } for (auto v1:v) { std::cout<<v1<<std::endl; }}...
Thread2
互斥量互斥量解决多线程数据共享问题当多线程去共享同一个数据的时候,会造成争夺 12345678910111213141516171819#include <iostream>#include <thread>int a = 0;void func() { for (int i = 0; i < 10000; i++) { a += 1; }}int main() { std::thread t1(func); std::thread t2(func); t1.join(); t2.join(); std::cout << a << std::endl; system("pause"); return...
Thread
C++11多线程编程 进程与线程 进程就是正在运行的程序 线程就是进程中的进程 多线程可以提高效率。 线程的多少取决于CPU的核数如下图,如果是串行的话就必须顺序执行,但如果并行的话你就可以在同一时间内干多个事情。但同时要注意你的“核数”,你不能同时刷抖音和听音乐,因为你没有四个耳朵,亦或者说你的手机同一时间内只能处理一个应用播放声音。 C++11 Thread 准备工具 Visual Studio 线程库 thread 12#include <iostream>#include <thread> 使用thread创建一个线程123456789void PrintHelloWorld(){ std::cout<<"HelloWorld"<<std::endl;}int main(){ std::thread thread1(PrintHelloWorld); return...
第一篇文章!
汇编语言(一)CPU的组成 运算器进行信息处理; 寄存器进行信息存储; 控制器协调各种器件进行工作; 内部总线实现CPU内各个器件之间的联系。 [{"url":"1.png","alt":"img","title":""}] 8086上一代CPU的寄存器是八位的,那如何保证兼容性呢?把16位寄存器分成AH和AL两个独立的8位寄存器使用;同样,32位或64位的寄存器也可以分,从而实现兼容性。比如AX中现在存储0101010110101010,可以分为AH01010101和AL10101010来存储 汇编指令汇编指令 控制CPU完成的操作 mov ax,18 将18送入AX mov ah,78 将78送入AH add ax,8 将AX中的值和8相加并把值存入AX mov ax,bx 将BX中的值赋值给AX add ax,bx ...