C/C++
文章平均质量分 55
Heisenberg_888
互联网工程师,努力学习中
展开
-
pthread_create传递参数
int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void * (*func)(void *), void *arg);参数func 表示代一个参数void *,返回值也为void *;对于void *arg,参数传入,在gcc 3.2.2条件下,以下面两种方式传入都可编译通过。int ssock;int TCPechod(int fd);1.pthread_create(&th, &ta, (void..转载 2021-12-19 00:23:58 · 1775 阅读 · 0 评论 -
C++ no matching function for call to ‘async‘
原文链接:c++ - "no matching function for call to ‘async(std::launch, <unresolved overloaded function type>, std::string&)’" - Stack Overflow#include <future>class libWrapper{public: void Connect(std::string ip); void Connect_T(s转载 2021-12-18 22:27:20 · 1426 阅读 · 0 评论 -
C++回溯求数组所有子集
#include<bits/stdc++.h>using namespace std;void fun(vector<vector<int>>&res, vector<int>&vc,vector<int> &tmp,int start){ if(tmp.size()>0) { res.push_back(tmp); } //不要用else for(int.原创 2021-12-17 17:15:34 · 1241 阅读 · 0 评论 -
C++和python运行时间简单对比
一直知道C++比python快,但自己没试过,通过打印10000次,统计下时间,对C++和python的速度进行一个粗略的对比吧。python打印10000次import timetime_start=time.time()for i in range(10000): print(i)time_end=time.time()print('totally cost',time_end-time_start)C++打印10000次#include<iostrea原创 2021-11-30 23:31:56 · 2277 阅读 · 0 评论 -
华为机试未知输入问题
一行是一个vector的数字,个数未知// 本题为考试多行输入输出规范示例,无需提交,不计分。#include<bits/stdc++.h>using namespace std;int main(){ int a; vector<int> vc1; vector<int> vc2; cin>>a; char c; while((c=getchar())!='\n'){ vc1.p原创 2021-09-15 21:40:09 · 225 阅读 · 0 评论 -
C++匿名函数
shellmad-10_C++新特性 lambda表达式与匿名函数_哔哩哔哩_bilibili#include <iostream>#include <string>#include <unordered_map>using namespace std;int main(){ int c=[](int a,int b) -> int{ return a+b; }(3,5); cout<<c<&原创 2021-09-14 21:27:08 · 187 阅读 · 0 评论 -
虚函数内存分布
下面2种大小都是1.#include<iostream>using namespace std;class A{};int main(){ A a; cout<<sizeof(a)<<endl; return 0;}#include<iostream>using namespace std;class A{public : void fun1(){}; void fun2(){};};i原创 2021-09-06 11:10:51 · 329 阅读 · 0 评论 -
C++之菱形继承
C++之菱形继承_Zimomo的技术博客_51CTO博客当我们谈C++时,我们谈些什么?封装,继承,多态。这是C++语言的三大特性,而每次在谈到继承时我们不可避免的要谈到一个很重要的问题——菱形继承。a.菱形继承是什么如上图,菱形继承即多个类继承了同一个公共基类,而这些派生类又同时被一个类继承。这么做会引发什么问题呢,让我们来看一段代码吧!#include<iostream>using namespace std;class Base{protecte...转载 2021-09-03 19:08:48 · 219 阅读 · 0 评论 -
C++的三大特性
原文链接:C++的三大特性_你看看这个C还有++-CSDN博客_c++特性C++的三大特性:继承、多态、封装1、继承 被继承的是父类(基类),继承出来的类是子类(派生类),子类拥有父类的所有的特性。 继承方式有公有继承、私有继承,保护继承。默认是私有继承公有继承中父类的公有和保护成员在子类中不变,私有的在子类中不可访问。私有继承中父类的公有和保护成员在子类中变为私有,但私有的在子类中不可访问。保护继承中父类的公有和保护成员在子类中变为保护,但私有的在子类中不可访问。 c++语言.转载 2021-09-02 16:07:43 · 113 阅读 · 0 评论 -
智能指针实现
参考链接:C++11中智能指针的原理、使用、实现 - wxquare - 博客园 (cnblogs.com)原创 2021-08-18 22:46:27 · 93 阅读 · 0 评论 -
C++ string源码
#include <bits/stdc++.h>using namespace std;class String{public: String(const char *str = NULL); String(const String &str); //拷贝构造 ~String(); String &operator=(const String &str); //赋值运算符,返回引用 String operator+(c.原创 2021-08-12 23:12:51 · 767 阅读 · 0 评论 -
关于构造函数 和 析构函数 能否抛出异常的讨论
构造函数和析构函数分别管理对象的建立和释放,负责对象的诞生和死亡的过程。当一个对象诞生时,构造函数负责创建并初始化对象的内部环境,包括分配内存、创建内部对象和打开相关的外部资源,等等。而当对象死亡时,析构函数负责关闭资源、释放内部的对象和已分配的内存。在对象生死攸关的地方,如果程序代码出现问题,常常会发生内存泄漏,从而产生可能危害系统运行的孤魂野鬼。大量的事实表明,业务逻辑代码写得非常严谨的程序在运行中仍然发现存在内存泄露,大都是构造和析构部分的代码存在问题。而许多程序员都习惯于面向对象的编程,需要转载 2021-04-03 16:57:04 · 266 阅读 · 0 评论 -
c++ unordered_map 源码的解析以及vector,string实现
https://blog.csdn.net/yangxuan0261/article/details/52090128转载 2021-03-28 22:37:37 · 1248 阅读 · 0 评论 -
C++中类成员的访问权限和继承权限问题
1) 三种访问权限① public:用该关键字修饰的成员表示公有成员,该成员不仅可以在类内可以被 访问,在类外也是可以被访问的,是类对外提供的可访问接口;② private:用该关键字修饰的成员表示私有成员,该成员仅在类内可以被访问,在类体外是隐藏状态;③ protected:用该关键字修饰的成员表示保护成员,保护成员在类体外同样是隐藏状态,但是对于该类的派生类来说,相当于公有成员,在派生类中可以被访问。2) 三种继承方式① 若继承方式是public,基类成员在派生类中的访问权限保持不变转载 2021-03-24 11:03:22 · 1300 阅读 · 0 评论 -
C++空指针使用nullptr代替NULL
C++空指针使用nullptr代替NULL - 算法集市的文章 - 知乎 https://zhuanlan.zhihu.com/p/164899234C/C++中,为了避免野指针(即指针没有指向任何地址)的出现,声明一个指针后,最好马上对其进行初始化。如果暂时不明确指针指向哪个变量,则可以赋予NULL,如:int* p = NULL;除了NULL之外,C++11新标准引入了nullptr来表示一个空指针。nullptr 既不是整型类型,也不是指针类型,nullptr 的类型是 std转载 2021-03-24 10:24:10 · 573 阅读 · 0 评论 -
头文件防卫式声明
https://mp.weixin.qq.com/s/UjcAdWMoyNycYznhhmhZSw转载 2021-03-22 16:41:26 · 144 阅读 · 0 评论 -
回调函数
https://mp.weixin.qq.com/s/MflckbcyANMyu2Anl3qXXw转载 2021-03-22 16:17:19 · 272 阅读 · 0 评论 -
C++仿函数
https://www.jianshu.com/p/99f2bdd427ba仿函数(functor),就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。在我们写代码时有时会发现有些功能实现的代码,会不断的在不同的成员函数中用到,但是又不好将这些代码独立出来成为一个类的一个成员函数。但是又很想复用这些代码。写一个公共的函数,可以,这是一个解决方法,不过函数用到的一些变量,就可能成为公共的全局变量,再说为了复用这么一片代码,就转载 2021-03-22 15:56:21 · 473 阅读 · 0 评论 -
C++模板
https://mp.weixin.qq.com/s/7gC9T0rSM9honWrmawYpkw转载 2021-03-22 15:39:57 · 87 阅读 · 0 评论 -
静态类型和动态类型以及静态绑定和动态绑定的总结
静态类型:对象在声明时采用的类型,在编译期既已确定; 动态类型:通常是指一个指针或引用目前所指对象的类型,是在运行期决定的; 静态绑定:绑定的是静态类型,所对应的函数或属性依赖于对象的静态类型,发生在编译期; 动态绑定:绑定的是动态类型,所对应的函数或属性依赖于对象的动态类型,发生在运行期;从上面的定义也可以看出,非虚函数一般都是静态绑定,而虚函数都是动态绑定(如此才可实现多态性)。举个例子:#include <bits/stdc++.h>using namespace std;转载 2021-03-08 15:31:08 · 642 阅读 · 0 评论 -
浮点数double在内存中的存储方式
C语言中浮点数在内存中的存储方式C语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用64bit,我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?float在内存中的存储方式如下图所示:double在内存中的存储方式如下图所示:无论是单精度还是双精度在存储中都分为三个部分:1.符号位(Sign) : 0代表正,1代表为负2.指数位(Exponent):用于存储科学转载 2021-03-04 15:41:06 · 12753 阅读 · 6 评论 -
C++异常怎么写
http://c.biancheng.net/view/422.html#include <iostream>using namespace std;int main(){ double m ,n; cin >> m >> n; try { cout << "before dividing." << endl; if( n == 0) throw -1; /转载 2021-03-04 15:14:13 · 240 阅读 · 1 评论 -
构造函数、析构函数的执行顺序
1) 构造函数顺序① 基类构造函数。如果有多个基类,则构造函数的调用顺序是某类在类派生表中出现的顺序,而不是它们在成员初始化表中的顺序。② 成员类对象构造函数。如果有多个成员类对象则构造函数的调用顺序是对象在类中被声明的顺序,而不是它们出现在成员初始化表中的顺序。③ 派生类构造函数。2) 析构函数顺序① 调用派生类的析构函数;② 调用成员类对象的析构函数;③ 调用基类的析构函数。作者:阿秀链接:https://zhuanlan.zhihu.com/p/349967745转载 2021-03-03 16:36:48 · 3500 阅读 · 1 评论 -
(超重要)构造函数为什么不能为虚函数?析构函数为什么要虚函数?
1、 从存储空间角度,虚函数相应一个指向vtable虚函数表的指针,这大家都知道,但是这个指向vtable的指针事实上是存储在对象的内存空间的。问题出来了,假设构造函数是虚的,就须要通过 vtable来调用,但是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。2、 从使用角度,虚函数主要用于在信息不全的情况下,能使重载的函数得到相应的调用。构造函数本身就是要初始化实例,那使用虚函数也没有实际意义呀。所以构造函数没有必要是虚函数。虚函数的作用在于通过父类转载 2021-03-01 11:42:49 · 11461 阅读 · 0 评论 -
成员初始化列表的概念,为什么用它会快一些?
成员初始化列表的概念在类的构造函数中,不在函数体内对成员变量赋值,而是在构造函数的花括号前面使用冒号和初始化列表赋值效率用初始化列表会快一些的原因是,对于类型,它少了一次调用构造函数的过程,而在函数体中赋值则会多一次调用。而对于内置数据类型则没有差别。举个例子:#include <iostream>using namespace std;class A{public: A() { cout << "默认构造函数A()" <转载 2021-03-01 11:26:33 · 1720 阅读 · 0 评论 -
C++中类的数据成员和成员函数内存分布情况
C++类是由结构体发展得来的,所以他们的成员变量(C语言的结构体只有成员变量)的内存分配机制是一样的。下面我们以类来说明问题,如果类的问题通了,结构体也也就没问题啦。类分为成员变量和成员函数,我们先来讨论成员变量。一个类对象的地址就是类所包含的这一片内存空间的首地址,这个首地址也就对应具体某一个成员变量的地址。(在定义类对象的同时这些成员变量也就被定义了),举个例子:#include <iostream>using namespace std;class Person{pub转载 2021-03-01 10:58:52 · 1240 阅读 · 0 评论 -
C++中必须用参数列表初始化的4种情况
https://blog.51cto.com/9233403/1968043在C++中,必须使用构造函的参数列表来初始化成员变量的4种情况如下:(1)成员变量类型为 const int m_nData;class test{ private: const int m_nData; public: test():m_nData(120){}};(2)类中有引用型变量 class test { private: int m_nData转载 2021-02-28 17:50:14 · 1036 阅读 · 0 评论 -
C++的四种类型转换reinterpret_cast/const_cast/static_cast /dynamic_cast
https://zhuanlan.zhihu.com/p/349967745转载 2021-02-22 16:09:35 · 603 阅读 · 0 评论 -
什么时候用右值引用
https://www.jianshu.com/p/da15b7bb4c74void abc(int &a){ std::cout << a << std::endl;}void abc(int &&a){ std::cout << a << std::endl;}abc(1)a = 1abc(a)这里面1传给abc本来是需要拷贝一次的,现在是使用了第二个函数,就不需要了。第二个还转载 2021-02-22 11:52:20 · 782 阅读 · 0 评论 -
函数指针及其定义和用法,C语言函数指针详解
http://c.biancheng.net/view/228.htmlint Func(int x); /*声明一个函数*/int (*p) (int x); /*定义一个函数指针*/p = Func; /*将Func函数的首地址赋给指针变量p*/赋值时函数 Func 不带括号,也不带参数。由于函数名 Func 代表函数的首地址,因此经过赋值以后,指针变量 p 就指向函数 Func() 代码的首地址了。# include <stdio.h>int转载 2021-02-21 09:10:39 · 642 阅读 · 0 评论 -
Effective C++ 准则
02:尽量使用const,enum,inline替换#define编译器无法看见,或者在预处理过程就被移走了,没有进入记号表。const double AspectRatio = 1.653;03:尽可能使用constconst出现在星号左边,表示被指物是常量;如果出现在星号右边,表示指针自身是常量;出现在星号两边,表示被指物和指针两者都是常量。有些人习惯不同,以星号的左边右边为判断准则。...原创 2021-02-10 08:06:58 · 296 阅读 · 0 评论 -
侯捷C++笔记
1.如果是类中只读函数后面没有加上const,这样如果变量定义成const,而函数没写成const,这样编译期会困惑。2.相同class的各个对象objects互为友元。3.构造函数初始化用:,比{}里面初始化效率更高。4.函数返回值写成void时,应该考虑链式赋值,如果是void就行不通了。5.拷贝赋值函数,需要检测自我赋值。6.一般函数的变量都有一个栈存放变量,函数(作用域)结束内存自动释放,但是new是获取heap,用完自己释放空间。static变量直到程序结束生命周期才会结束原创 2021-02-09 11:03:48 · 366 阅读 · 0 评论 -
C++中的static的作用
原博客链接:https://www.cnblogs.com/-believe-me/p/11603860.html,十分感谢博主。C++中的static的作用C++中的关键字static,顾名思义表示静止,静态,下面是C++中static的一些常见应用一,作用于函数内部的局部变量局部作用域静态变量的特点:当一个函数返回后,下一次再调用时,该变量还会保持上一回的值,函数内部的静态变量只开辟一次空间,且不会因为多次调用产生副本,也不会因为函数返回而失效例如:如果我想实现fun()函数功能:在函数内转载 2021-01-26 16:49:18 · 1065 阅读 · 0 评论 -
【C++】智能指针详解
转载自https://blog.csdn.net/flowing_wind/article/details/81301001,把我自己认为的重点标识一下。参考资料:《C++ Primer中文版 第五版》我们知道除了静态内存和栈内存外,每个程序还有一个内存池,这部分内存被称为自由空间或者堆。程序用堆来存储动态分配的对象即那些在程序运行时分配的对象,当动态对象不再使用时,我们的代码必须显式的销毁它们。在C++中,动态内存的管理是用一对运算符完成的:new和delete,new:在动态内存中为对象分配一转载 2021-01-26 14:42:22 · 247 阅读 · 0 评论 -
多线程之pthread_create()函数
总述:pthread_create是(Unix、Linux、Mac OS X)等操作系统的创建线程的函数。它的功能是创建线程(实际上就是确定调用该线程函数的入口点),在线程创建以后,就开始运行相关的线程函数。pthread_create的返回值表示成功,返回0;表示出错,返回表示-1。pthread_create函数如何创造线程函数原型声明:#include <pthread.h>int pthread_create( pthread_t *re转载 2020-12-31 11:20:07 · 1838 阅读 · 0 评论 -
MinGWC++源码分布
原创 2020-12-29 11:02:27 · 655 阅读 · 0 评论 -
C++并发编程书以及python
http://shouce.jb51.net/cpp_concurrency_in_action/index.html转载 2020-11-04 21:38:55 · 154 阅读 · 0 评论 -
分割字符串总结
在468. 验证IP地址和809. Expressive Words中都出现了字符串分割,做个总结。468这题里分割IP地址,给你指定分隔符delim,比如“:”,分割字符串。思路很简单,遍历字符串,遇到分隔符delim,就把之前遍历的字符组成1个小组,注意在遍历结束时,如果tmp非空,说明应该再分1个小组。这里最后的if(ip[len-1])是针对这题而言的,普通情况下不需要这种判断。 void split(string ip,vector<string> &vc原创 2020-10-14 22:16:32 · 188 阅读 · 0 评论 -
POJ3076数独——剪枝
DescriptionA Sudoku grid is a 16x16 grid of cells grouped in sixteen 4x4 squares, where some cells are filled with letters from A to P (the first 16 capital letters of the English alphabet), as shown in figure 1a. The game is to fill all the empty grid c原创 2020-06-13 18:54:23 · 350 阅读 · 0 评论 -
priority_queue用法总结
https://blog.csdn.net/qq_36561697/article/details/82194569转载 2020-05-12 17:53:05 · 255 阅读 · 0 评论