C/C++
AlwaysSimple
如果有问题,请联系:gyphust@qq.com
展开
-
folly 报错 undefined reference to `cplus_demangle_v3_callback‘
folly 报错 undefined reference to `cplus_demangle_v3_callback'原创 2022-12-12 14:59:16 · 862 阅读 · 0 评论 -
C++ 编译报错“undefined reference to `vtable for”
这个一般是检查相关的虚函数是否写好。原创 2022-12-12 01:14:19 · 788 阅读 · 0 评论 -
【Clion问题记录】重复运行同一个main.cc报错
【Clion问题记录】重复运行同一个main.cc报错原创 2022-09-20 14:27:53 · 810 阅读 · 0 评论 -
C++ future 使用demo
#include <iostream>#include <atomic>#include <vector>#include <future>#include <unistd.h>class MyClass { public: int func2(int x, int y) { return x + y; }};using namespace std;int main() { //计算(a+b)/(x+y).原创 2021-10-27 16:20:15 · 462 阅读 · 1 评论 -
C++ 生成64位范围的随机数
由于在C++中,rand()函数只能生成32位的随机数,当需要64位的随机数时,则需要用到mt19937_64,用法如下:#include <iostream>#include <random>int main(int argc, char **argv) { std::mt19937_64 rng(2); // 种子,可以选择时间作为seed std::uniform_int_distribution<uint64_t> distrib原创 2021-10-12 10:52:18 · 2954 阅读 · 2 评论 -
C++ cout 重定向到字符串变量
将cout的输出内容重定向到字符串变量中,如下:#include <iostream>#include <map>#include <sstream>#include <string>using namespace std;int main() { stringstream ss; streambuf* buffer = cout.rdbuf(); //oldbuffer,STDOUT的缓冲区 cout.rdbuf(ss.r.原创 2021-09-06 15:23:55 · 3341 阅读 · 0 评论 -
c语言多线程返回值以及内存回收的问题
c语言多线程返回值以及内存回收的问题背景昨天在写一个C语言的多线程小程序,要求不出现内存泄漏,其中用到了valgrind检测内存是否泄漏,这个工具只在面试的时候了解过,并没有用过,这次正好接触到了,觉得比较有意思,所以这里记录成博客。为便于写博客,在这里将题目稍作修改:主线程获得一个入参n,创建n个子线程,并给子线程传递一个参数 i (i为1,2,3,,,,n),子线程计算 i 平方,并将结果返回给主线程,主线程将各个子线程的结果进行累加,得到最终结果,要求不出现内存泄漏。知识点:多线程,参数传递原创 2020-12-18 22:16:45 · 2270 阅读 · 1 评论 -
JsonCpp的小数精度问题和插入输出顺序问题
JsonCpp的小数精度问题和插入输出顺序问题直接说吧,这两个问题无法解决,如下:官方不支持指定小数位数,double默认位宽为17位,如:"value" : 7.0999999999999996, 官方不支持按插入顺序输出,而是按照key的字母排序输出的,不管你什么顺序插入,下面的都是这样的顺序输出的: "avg_abcdd " : 1.1632640000000014,"avg_pxczzczxczxd " : 7.0999999999999996,原创 2020-06-04 15:27:47 · 2252 阅读 · 1 评论 -
google风格C++代码规范(长期更新)最近更新:2020.6.5
目录google风格代码规范(长期更新)google风格代码规范(长期更新)<chrono> is an unapproved C++11 header. [build/c++11]解决:使用 <ctime>for的写法for (auto iter : NumVec) { std::cout << iter;}或for (int i = 0 ; i < NumVec.size(); i++) { std::cout <&l原创 2020-05-28 14:53:12 · 2496 阅读 · 0 评论 -
C++的重载、重写、隐藏
C++的重载、重写、隐藏参考链接:https://blog.csdn.net/zx3517288/article/details/48976097作用(个人理解)重载:一般是用来实现不同的数据类型使用同一个函数名,在C++中实现静态多态的功能,比如add(int a,int b) 与 add(float a,float b),这样在调用add(1,4)或者add(1.5,5.6)的时候,编...原创 2020-03-09 14:06:32 · 322 阅读 · 1 评论 -
c/c++中getopt()函数的使用
getopt()函数简介getopt()函数用于分析命令行参数。头文件: #include<unistd.h>定义原型: int getopt(int argc, char * const argv[ ],const char * optstring);argc 和argv参数通常直接从main的参数直接传递而来。optstring是一个包含合法选项字符的字符串。例如:...原创 2020-02-13 13:28:49 · 1416 阅读 · 0 评论 -
C++11中Initializer_list日常编程的使用(1)
最近学习C++11的Initializer_list,感觉比以前编程方便了不少,下面仅说一些个人觉得比较方便的地方。#include <iostream>#include <algorithm>using namespace std;void fun(vector<int> nums) { for (auto iter = nums.beg...原创 2020-01-01 17:03:12 · 626 阅读 · 0 评论 -
C++ 构造堆
构造堆运算符构造语句构造堆类型堆顶元素默认make_heap(data.begin(), data.end());大顶堆最大值<make_heap(data.begin(), data.end(), less());大顶堆最大值>make_heap(data.begin(), data.end(), greater());小顶堆最...原创 2019-12-16 21:22:16 · 527 阅读 · 0 评论 -
C++ 编译 invalid use of incomplete type
问题现象class cat;struct dog { cat *point; friend bool operator<(const dog &a, const dog &b) { cat *cat_a = a.point; cat *cat_b = b.point; return cat_a->a...原创 2019-12-16 20:23:13 · 6465 阅读 · 2 评论 -
C++使用多线程交替打印1~10
C++使用多线程交替打印1~10使用多线程交替打印1-10,线程1打印奇数,线程2打印偶数,有两种方式实现,一种是使用信号量(即互斥锁),另一种是不使用互斥量,人为控制number的读写。以下为个人想法,可能有错误: 这是一个面试很常见的题目,要求交替打印,使用互斥量的原理很简单,就是确保一个线程在对number进行操作的时候给number上锁,使得其他线程不能访问number,必须等该线...原创 2019-11-20 16:10:45 · 5531 阅读 · 2 评论 -
N皇后问题
title: N皇后问题date: 2019-11-06 20:38:14tags:【题目】 本题leetcode(51.N皇后问题)链接:https://leetcode-cn.com/problems/n-queens/52题是51题上的简化,不再赘述.【描述】 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。【思路】 ...原创 2019-11-06 22:09:41 · 153 阅读 · 0 评论 -
KMP字符串匹配算法
KMP字符串匹配算法推荐一个讲解视频:B站KMP讲解视频 KMP整个算法分为三个阶段,如下: (1) cal_next_1,计算待匹配字符串的前后缀数组next; (2) move_next,next右移一位,next[0] = -1 (3)进行字符串匹配. 其中在计算next数组时有两种方法,一个是比较简单的常规方法直接计算next数组,另一种是比较高阶的方法,两种都应该要...原创 2019-10-20 15:41:41 · 139 阅读 · 0 评论 -
两个无序链表合并成一个有序链表
两个无序链表合并成一个有序链表要求将两个无序链表合并成一个有序链表,要求时间复杂度不大于O(n^2),空间复杂度为O(1)即不可以开辟新的空间存储链表,另外不可采用复制节点值的方法实现,只能通过链表节点的交换实现.输入:链表1为:5 9 15 25链表2为:1 11 13 35 65输出:合并后:1 5 9 11 13 15 25 35 65#include <iostrea...原创 2019-10-18 10:07:15 · 5341 阅读 · 1 评论 -
Codeblocks使用nullptr报错:warning: identifier 'nullptr' is a keyword in C++11 [-Wc++0x-compat]
Codeblocks使用nullptr报错:warning: identifier 'nullptr' is a keyword in C++11 [-Wc++0x-compat]问题描述主要原因是nullptr是C11的特性,需要在编译器中设置。解决步骤点击 setting(设置) -----> compiler setting(编译器设置) -----> Glo...原创 2019-03-09 21:27:46 · 4178 阅读 · 0 评论 -
C/C++中strlen()、sizeof()、size()的区别
strlen()、size()、sizeof()的区别1.strlen()strlen是一个C语言中的一个字符串函数,使用strlen返回的是字符串实际的大小,在程序的运行过程中计算。#include <iostream>#include <cstdio>#include <cstring>using namespace std;int ...原创 2019-03-27 20:20:04 · 630 阅读 · 0 评论 -
C语言time_t整数转datetime日期时间
转载地址:https://www.eefocus.com/xuefu2009/blog/10-04/188676_67757.html(1)time_t整数转日期时间#include <stdio.h>#include <time.h>int main(){ char *wday[]={"Sun","Mon","Tue","Wed","Thu",...转载 2019-06-29 17:16:27 · 8927 阅读 · 0 评论 -
Clion安装配置(Windows)
Clion安装配置1.下载并安装下载网址:http://www.jetbrains.com/clion/download/#section=windows安装过程很简单,直接按照提示按照就可以了。2.下载MinGW下载地址:https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/P...原创 2019-08-26 10:44:28 · 2419 阅读 · 2 评论 -
C++中vector使用find函数查找struct结构体内容
vector使用find函数查找struct结构体内容1.基本类型的查找在一般情况下,vector在基本类型场景下可以直接find函数,如下:#include <iostream>#include <vector>#include <algorithm>using namespace std;int main(){ vector <in...原创 2019-08-26 15:09:12 · 16545 阅读 · 1 评论 -
C++11产生随机数
C++11产生随机数代码#include <iostream>#include <ctime>#include <random>#include <algorithm>using namespace std;/*随机数的结果一样*/void generate_random_1(int num){ default_rando...原创 2019-08-27 11:59:28 · 900 阅读 · 0 评论 -
C++如何提高Vector效率的一些方法
C++如何提高Vector效率的一些方法参考的博客网址:《STL vector提高效率注意事项与技巧》 https://blog.csdn.net/hyqsong/article/details/50514625《vector效率低怎么破?》 https://blog.csdn.net/wangshubo1989/article/details/52858523《两个vector之间复制数...原创 2019-08-27 20:15:41 · 6449 阅读 · 2 评论 -
整数取反(取负)运算
整数取反(取负)运算参考文章: https://www.cnblogs.com/xiaodingmu/p/8215613.html基础知识整数在计算机中以补码形式存储,由如下一些注意点:(1)其中正数的补码、源码、反码都相同; 例: 5的补码为10000000 00000000 00000000 00000110(2)负数的补码=原码除符号位外取反+1; 例:-5的补码为1000...原创 2019-09-11 21:51:07 · 15686 阅读 · 2 评论 -
关于C++内置排序函数sort的自定义比较器cmp用法
关于C++内置排序函数sort的自定义比较器cmp用法1.基础知识C++的内置排序函数sort是一个很方便且常用的函数,默认升序排序 其头文件为#include 用法网上有很多,举个简单的例子:#include <iostream>#include <vector>#include <algorithm>using namespace std;i...原创 2019-09-12 19:53:11 · 8456 阅读 · 8 评论 -
STL中堆的使用
参考博客:https://blog.csdn.net/qq_34793133/article/details/81222919待完成原创 2019-09-15 21:38:31 · 310 阅读 · 0 评论 -
关于C++重载、重写、重定义的理解
关于C++重载、重写、重定义的理解三个名词的定义重载:(overload)是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型,即返回类型可以相同或不同。重写(覆盖):(override)是指派生类中存在重新定义的函数。其函数名,参数列表,返回值类型,所有都必须同基类中被重写的函数一致。只有函数体不同(花括...原创 2019-09-21 11:16:50 · 950 阅读 · 0 评论 -
常见排序的实现C++
常见排序的实现C++ 在C++中,常见的排序有归并排序(MergeSort)、冒泡排序(BubbleSort)、STL快速排序(StlSort)、选择排序(SelectionSort)、快速排序(QuickSort)、插入排序(InsertSort)、堆排序(HeapSort)。 下面对这几种排序分别进行了实现:代码如下:/*------------------------------...原创 2019-09-22 19:20:32 · 147 阅读 · 0 评论 -
C/C++字符串变量的声明方式差异
C/C++字符串变量的声明方式差异常见的字符串声明形式有如下形式:*char str1[16] ,char str1,char str[]这三种声明形式内在有何不同,下面进行实验:代码如下:#include <iostream>using namespace std;char *StrLab1();char *StrLab2();char *StrLab3();i...原创 2019-09-27 16:03:36 · 782 阅读 · 0 评论 -
剑指offer刷题记录
剑指offer刷题记录内容描述 本仓库链接:https://github.com/guyongpu/SwordOffer.git 本仓库为牛客网剑指offer题目的刷题记录,网址为:https://www.nowcoder.com/ta/coding-interviews ,点击跳转到剑指offer每个题的代码放在src中,在main.cpp引入对应类的头文件,然后运行测试函数即可,例...原创 2019-09-28 22:14:31 · 315 阅读 · 0 评论 -
C++切割字符串
将类似 1,2,3,4,5,6 2提取到vector内 int main() { char line[1000001]; char str[1000];while (cin.getline(line, 1000000)) { vector<int> vec; int n = 0; sscanf(line,...原创 2018-09-25 19:59:15 · 210 阅读 · 0 评论