
C++
文章平均质量分 76
工作中遇到的整理下来的小工具
黑山老妖的笔记本
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++笔记-用指定字符串替换目标字符串中的字串-find-substr-replace
功能是:用字符串zhangsan、lisi、wangwu替换目标字符串names=[\"#1\",\"#2\",\"#3\"]中的#1、#2、#3;结果是:names=[\"zhangsan\",\"lisi\",\"wangwu\"];1.使用std::string的replace方法;std::string org_str = "names=[\"#1\",\"#2\",\"#3\"]";std::string str_0 = "zhangsan";std::string str_1 = "l原创 2022-02-17 11:44:27 · 1849 阅读 · 0 评论 -
C++笔记-学习算法与实现-计算几何-二维向量和线段运算
判断正负号 给定一个double类型的数,判断它的符号;const double eps = 1e-8;int cmp(double x) { if (fabs(x) < eps) return 0; if (x > 0) return 1; return -1;}计算几何点类 设计了一个二维点类,可以进行一些向量运算。 det:计算两个向量的叉积; dot:计算两个向量的点积; dist:计算两个点的距离; rotate原创 2021-08-18 22:02:47 · 1057 阅读 · 0 评论 -
C++标准库笔记-Map-Multimap
C++标准库笔记-map用法原创 2021-05-30 19:25:04 · 445 阅读 · 0 评论 -
C++标准库笔记-多线程-初识高级接口async()和Future
多线程高级接口:async和FutureC++11提供的多线程开发接口中分为高级接口和低级接口;高级接口就是C++标准库中由std::async()和class std::future<>提供的高级接口;async()提供了一个接口,让一个函数或者一个函数对象能够在后台运行,成为一个独立的线程;class std::future<>允许你等待线程结束并获取其结果,可以获取到线程函数的返回值或者是一个异常;下面将使用《C++标准库》18章提供的例子和内容,展开对async和原创 2021-05-15 19:21:08 · 516 阅读 · 0 评论 -
C++标准库笔记-多线程概述
关于并发现代化体系结构通常支持同时执行多个任务(task)和多个线程(thread)。如果采用多线程处理器,程序执行时间可以在多线程情况下获得大幅度改善。程序员在刚开始进行程序编写时,一般都是编写单线程的程序。程序从开始执行到执行结束,只是用一个主线程,不考虑怎么最大化的榨干CPU处理器的性能,这里更谈不上对GPU计算资源的使用了。在《Java并发编程实战》的第一句话就是“编写正确的程序很难,而编写正确的并发程序则难上加难”;由此可见写好可以正常正确执行的并发程序是多么不容易;既然并发程序这么难写,原创 2021-05-15 13:53:06 · 347 阅读 · 0 评论 -
C++标准库笔记-多线程-低层接口Promise
前文C++标准库笔记-多线程-细说Future中,async()返回的future来实现线程之间传递结果和处理异常,class std::future<>允许你等待线程结束并获取其结果,可以获取到线程函数的返回值或者是一个异常;那么高级接口如async()如何实现这一技术呢?如果想要把参数传递给线程,可以把它们作为实参来传递;如果想要把线程的运行结果,可以使用by reference方式传递;另外一个用来传递运行结果和异常(结果的另外一种方式)的一般机制是:class std::prom原创 2021-05-16 17:37:46 · 363 阅读 · 0 评论 -
C++标准库笔记-多线程-细说Future
Future在前文C++11笔记-多线程-初识-async()和Future中,初次使用async()和Future来实现一个多线程的demo;在上一文中讲到,class std::future<>允许你等待线程结束并获取其结果,可以获取到线程函数的返回值或者是一个异常;这里将在学《C++标准库》时,把关于future的详细内容记录下来,方便以后工作学习使用;在18.3.2 细说Future中,讲到future用来表现某一操作的成果(outcome):可能是一个返回值或是一个异常,但二者原创 2021-05-16 09:52:07 · 1701 阅读 · 0 评论 -
C++标准库笔记-多线程-this_thread命名空间
this_thread针对任何线程(包括主线程main thread),<thread>声明了一个命名空间std::this_thread,用以提供线程专属全局函数;接口操作效果this_thread::get_id()获取当前线程的IDthis_thread::sleep_for(dur)将某个线程阻塞dur时间段this_thread::sleep_until(tp)将某个线程阻塞直到时间点 tpthis_thread::yield()建议原创 2021-05-19 07:56:51 · 470 阅读 · 0 评论 -
C++标准库笔记-多线程-shared_future-future的补充扩展
std::shared_future在之前笔记C++11笔记-多线程-细说Future中,std::future提供了“处理并发运算之未来结果”的能力,但是只能处理一次结果,第二次调用get()会导致不可以预期的行为;因为调用get()后会将future的state状态置为无效状态;在项目的不同场景中,也会有多次处理“并发运算之未来结果”的情况,特别是当多个其他线程都想处理这份结果时。所有C++标准库提供了std::shared_future,可以多次调用get(),产生相同结果或获得任务抛出的异常;原创 2021-05-16 12:28:38 · 1269 阅读 · 0 评论 -
C++标准库笔记-多线程-细说async()
async()在前文C++11笔记-多线程-初识-async()和Future中,初次使用async()和Future来实现一个多线程的demo;本文是在学习《C++标准库》时,做的笔记;在上一文中讲到,async()是尝试启动被调用的函数;用《C++标准库》的话来说,async()是个辅助函数,用来在分离线程中启动某个函数(如果可能的话,例如单线程系统就不可能);所以如果底层平台支持多线程,你可以让函数并发运转;如果底层平台不支持,也没有任何损失,就是从并行编程模型退化到串行编程模型,从异步执行退化原创 2021-05-15 20:26:25 · 688 阅读 · 0 评论 -
C++标准库笔记-智能指针
C++标准库笔记-智能指针原创 2021-05-30 16:28:01 · 349 阅读 · 0 评论 -
C++笔记-数字与字符串
进制转换两个数字字符串转换 目标:把一个x进制的数字符串转换成y进制字符串; 说明:先把x进制的数转换为十进制,再将十进制数不断取模再倒序,转换成y进制; 实现代码:std::string transform(int x, int y, std::string s) { std::string res = ""; int sum = 0; for (int i = 0; i < s.length(); i++) { if (s[i] == '-原创 2021-06-13 21:36:15 · 252 阅读 · 0 评论 -
C++-文件操作
前言日常工作中,经常遇到对文件的读写,是最基本的工作单元;C++中对文件读写,一般使用FILE(C语言)和 ifstream/ofstream/fstream(C++);在这里记录下工作中常用用法;一、C语言文件读写主要使用了C标准库的<stdio.h>提供了多个文件操作的接口函数;有如下:1.文件打开: FILE *fopen(const char *filename, const char *mode);2.文件关闭:int fclose(FILE *stream);3.原创 2021-04-09 13:17:03 · 222 阅读 · 0 评论 -
C++常用字符串实用方法汇总
记录一下平时使用的一些关于字符串的方法;拆分字符串生成字符串vector主要流程是通过对输入字符串inputString先find找到delimStr子串的开始位置,然后获取substr子串放入vector<string>结果集合中;// 将inputString按照delimStr进行分割static std::vector<std::string> SplitString(std::string inputString, std::string delimStr){原创 2021-06-05 08:21:28 · 985 阅读 · 0 评论 -
C++笔记-获取当前系统时间
由于在程序中常遇到日志,性能统计一些功能的实现,需要获取当前系统的时间;本文记录了获取当前系统时间的几种方法,以便使用和查找;clock函数原创 2021-05-16 18:13:48 · 1626 阅读 · 0 评论