C++
1000001000,,,,
九层之坮,起于垒土。
展开
-
C++ 直角坐标转极坐标(4个象限)
atan2是一个函数,在C语言里返回的是指方位角,C 语言中atan2的函数原型为 double atan2(double y, double x) ,返回以弧度表示的 y/x 的反正切。y 和 x 的值的符号决定了正确的象限。也可以理解为计算复数 x+yi 的辐角,计算时atan2 比 atan 稳定。(百度) 使用atan,在三、四象限计算会出错,应该定义域为-ip/2,ip/2。...原创 2021-07-16 16:30:10 · 1442 阅读 · 0 评论 -
C++之shared_ptr总结
原文链接:http://blog.csdn.net/u013696062/article/details/39665247Shared_ptr和auto_ptr最大的区别就是,shared_ptr解决了指针间共享对象所有权的问题,也就是auto_ptr中的赋值的奇怪问题。所以满足了容器的要求,可以用于容器中。而auto_ptr显然禁止共享对象所有权,不可以用于容器中。转载 2017-12-08 14:59:47 · 338 阅读 · 0 评论 -
在VIM下写C++能有多爽?
原文链接:http://blog.csdn.net/yangjvn/article/details/47806863我是坚定的Vim党,因为和命令行的集成如此之好,Vim可以解决任何问题。 然而在这个世界上,即便是最好用的工具也是需要配置的。本文就来打造一个适合写C++的Vim编辑器!基础设置稍微熟悉Vim的小伙伴都会知道这个文件~/.vimrc,如同绝大多数的Unix软件转载 2017-12-03 20:49:18 · 626 阅读 · 0 评论 -
C++连接Mysql数据库
1.概述C++连接Mysql数据库可以通过以下方法:第一种方法是利用ADO连接,第二种方法是利用mysql自己的api函数进行连接。本次主要介绍第二种方法。2.下载安装Mysql mysql下载地址: https://dev.mysql.com/downloads/;安装这里不进行介绍。 如果已经安装mysql,但是缺少连接支持库,只需下载库即可。下载地址: https://dev...原创 2018-03-03 14:37:19 · 234 阅读 · 0 评论 -
select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
原文链接:http://blog.sina.com.cn/s/blog_a43aa27401015kt9.htmlselect函数用于在非阻塞中,当一个套接字或一组套接字有信号时通知你,系统提供select函数来实现多路复用输入/输出模型,原型:int select(int maxfd,fd_set *rdset,fd_set*wrset,fd_set *exset,struct timeval*...转载 2018-03-29 12:44:51 · 219 阅读 · 0 评论 -
vtune性能分析工具--找出程序性能瓶颈
1. 概述VTune是Intel一个比较强大的性能分析软件。主要包括三个小工具:(1)Performance Analyzer:性能分析,找到软件性能比较热的部分,一般也就是性能瓶颈的关键点。(2)Intel Threading Checker:用于查找线程错误, 能够检测资源竞争、线程死锁等问题(3)Intel Threading Profiler:线程性能检测工具,多线程可能存在负载比平衡, ...转载 2018-04-04 22:51:45 · 3089 阅读 · 0 评论 -
boost安装提示 Building Boost.Build engine 'cl' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
1.按照网上的安装步骤执行bootstrap失败:分析原因应该是之前装过vs2010(可能卸载不干净),卸载后装了2013,再重新安装boost,出现上面的问题(电脑是32位的)。2.解决办法使用vs2013的命令提示工具(双击打开),切换到boost解压目录成功生成bjam.exe...原创 2018-04-18 22:42:26 · 7101 阅读 · 4 评论 -
Linux下gSOAP的使用
原文链接:https://www.cnblogs.com/cy163/archive/2013/03/29/2989757.html摘自: http://www.svnclub.com/?q=node/4161、下载gSOAP 在gSOAP官网中可以找到最新的gSOAP安装包以及相关的文档 gSOAP官网:http://www.cs.fsu.edu/~engelen/soap.html g...转载 2018-05-09 20:26:32 · 350 阅读 · 0 评论 -
C++ Vector 使用心得 --- 非常好的总结
原文链接:http://software.intel.com/zh-cn/blogs/2011/08/10/c-vector标准库Vector类型使用需要的头文件:#include <vector>Vector:Vector 是一个类模板。不是一种数据类型。 Vector<int>是一种数据类型。ector是STL中最常见的容器,它是一种顺序容器,支持随机访问。 vecto...转载 2018-05-18 19:56:56 · 2294 阅读 · 0 评论 -
说一说vector<bool>
原文链接:https://www.cnblogs.com/wpcockroach/p/3179572.htmlvector<T>标准库模版类应该是绝大多数c++程序员使用频率比较高的一个类了。不过vector<bool>也许就不那么被程序员所了解。关于vector<bool>不尝试研究一番,一般还不太容易知道其中蕴含的问题。首先得明确一点,那就是vector&l...转载 2018-05-18 20:00:20 · 256 阅读 · 1 评论 -
C++ boost库----share_from_this类的作用和实现原理
原文链接:使用boost库时,经常会看到如下的类class A:public enable_share_from_this<A>在什么情况下要使类A继承enable_share_from_this?使用场合:当类A被share_ptr管理,且在类A的成员函数里需要把当前类对象作为参数传给其他函数时,就需要传递一个指向自身的share_ptr。我们就使类A继承enable_share_f...转载 2018-05-07 14:51:18 · 197 阅读 · 0 评论 -
C/C++内存泄漏及检测
原文链接:https://www.cnblogs.com/skynet/archive/2011/02/20/1959162.html“该死系统存在内存泄漏问题”,项目中由于各方面因素,总是有人抱怨存在内存泄漏,系统长时间运行之后,可用内存越来越少,甚至导致了某些服务失败。内存泄漏是最难发现的常见错误之一,因为除非用完内存或调用malloc失败,否则都不会导致任何问题。实际上,使用C/C++这...转载 2018-08-15 22:56:12 · 185 阅读 · 0 评论 -
c++内存泄漏检测工具(上)
原文链接:http://blog.csdn.net/beanjoy/article/details/7578372 1/ VC自带的CRT:_CrtCheckMemory 调试器和 CRT 调试堆函数用法/************************************************************************* 环境:VC6....转载 2018-08-15 23:47:36 · 14185 阅读 · 0 评论 -
C++ 11 Lambda表达式
原文链接:https://www.cnblogs.com/DswCnblog/p/5629165.htmlC++ 11 Lambda表达式C++11的一大亮点就是引入了Lambda表达式。利用Lambda表达式,可以方便的定义和创建匿名函数。对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多高级语言在很早以前就已经提供了Lambda表达式的功能...转载 2018-08-18 16:44:56 · 126 阅读 · 0 评论 -
生产者-消费者模型(boost实现)
mydata.h#ifndef _MYDATA_H_#define _MYDATA_H_#endif#include "stdafx.h"#include<iostream>#include <boost/thread/condition.hpp>#include <boost/thread/mutex.hpp>#include <...原创 2018-08-19 14:09:47 · 945 阅读 · 0 评论 -
C++实现线程安全的单例模式
原文链接:https://www.cnblogs.com/myd620/p/6133420.html在某些应用环境下面,一个类只允许有一个实例,这就是著名的单例模式。单例模式分为懒汉模式,跟饿汉模式两种。首先给出饿汉模式的实现template <class T>class singleton{protected: singleton(){};priva...转载 2018-08-20 19:44:26 · 1109 阅读 · 0 评论 -
C++使用TinyXml2解析Xml
原文链接:https://blog.csdn.net/tojohnonly/article/details/664810681. TinyXml2 简介TinyXml 一直是一个非常好用的 Xml 解析工具 , 最新的开源版本 TinyXml2 相对于旧版本的 TinyXml 使用更少的内存 , 更快 , 并且使用更少的内存分配 , 现在是所有开发的重点 , 经过良好的测试 , 是您的最佳...转载 2018-10-16 09:01:29 · 739 阅读 · 0 评论 -
C++小品:井水不犯河水的thread_specific_ptr,C++11线程库中的本地存储
thread_specific_ptr 定义了一个跟线程相关的存储接口。实际上,它就是对TLS Thread-Locally Storage的包装。它可用于封装线程独立的全局变量。 其作用和使用方法有点类似于shared_ptr。在每个线程中,都各自new一个对象交给全局的threah_specific_ptr进行管理,当线程退出后,他会自动释放这个对象,这一点与shared_ptr非常...转载 2018-11-12 09:29:57 · 377 阅读 · 0 评论 -
C++/C 宏定义(define)中# ## 的含义
原文链接:https://www.cnblogs.com/little-ant/p/3463080.htmldefine 中的# ## 一般是用来拼接字符串的,但是实际使用过程中,有哪些细微的差别呢,我们通过几个例子来看看。#是字符串化的意思,出现在宏定义中的#是把跟在后面的参数转成一个字符串;eg:123#define str转载 2017-11-29 19:38:24 · 494 阅读 · 0 评论 -
vs2013下gtest的配置与入门实例测试
原文链接:http://blog.csdn.net/ruyueyini/article/details/47448211配置步骤先下载gtest,并解压。下载地址:https://github.com/google/googletest用vs2013打开gtest—-msvc—-gtest工程(双击gtest),弹出如下“单向升级”窗口,单击“确定”,会弹出“迁移报告”,关闭“迁移转载 2017-10-22 21:13:19 · 807 阅读 · 0 评论 -
C++统计字符串中每个字符出现的次数
#include#includeusing namespace std;int main(){char *a=new char[1024];while(1){printf("请输入字符串:\n");cin>>a;int r[1024]={0};while(*a!='\0'){r[*a++]+=1;}printf("结果:\n");for(原创 2016-06-13 22:22:28 · 5837 阅读 · 0 评论 -
deque
C++ Deque(双向队列) 是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结构中保存对这些块及其顺序的跟踪。向deque 两端添加或删除元素的开销很小。它不需要重新分配空间,所以向末端增加元素比vector 更有效。 实际上,转载 2016-06-07 21:28:41 · 293 阅读 · 0 评论 -
c++map基本操作
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数; mapmapstring; mapmapint; mapmapstring; mapmapchar; mapmapchar; mapmapint转载 2016-04-21 21:06:14 · 287 阅读 · 0 评论 -
虚函数与纯虚函数
纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!虚函数引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。class Cman{public:virtual void Eat(){……};void Move();private:};class CChild : public CMan{public:vir转载 2016-04-21 20:58:11 · 220 阅读 · 0 评论 -
求最高分(华为简单面试题)
//老师想知道从某某同学当中,分数最高的是多少,//现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩. 输入包括多组测试数据。每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。学生ID编号从1编到N。第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩接下来原创 2016-04-11 22:54:06 · 373 阅读 · 0 评论 -
C++运算符重载
C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作。例如: class complex { public: complex(double r=0.0,double I=0.0){real=r;imag=I;} void display(); private: double real; dou转载 2017-06-08 15:13:57 · 431 阅读 · 3 评论 -
ubuntu14 python 调用C++模块
1.安装pydevsudo yum install python-devel2.编写C++ 代码#include int Add(int x, int y){ return x + y;}int Del(int x, int y){ return x - y;}PyObject* WrappAdd(PyObject* self, Py原创 2017-06-09 00:25:48 · 943 阅读 · 1 评论 -
C++ 参数指针传递、引用传递、值传递的区别
值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。指针传递:形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作引用传递:形参相当于是实参的“别名”,对形参的操作其转载 2017-08-13 16:01:04 · 323 阅读 · 0 评论 -
C++ #define
#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对C语言的学习很不利。1 #define命令剖析1.1 #define的概念#define命令是C语言转载 2017-08-23 08:54:19 · 336 阅读 · 0 评论 -
《Effective C++ 》学习笔记——条款06
***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************二、Constructors,Destructors and Assignment OperatorsRule 06: Explicityl转载 2017-09-05 14:05:52 · 220 阅读 · 1 评论 -
C++ float double 的有效位
结论:有些编译器 float的有效数字位是 8位 , 有些有效数字位是 7位有些编译器double的有效数字位是 15位, 有些是 16位注意printf(“%f”, x); // 默认输出6位小数(不要和有效数字混淆)分析C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算无论是float还是double,在内存中的存储主要分转载 2017-08-31 10:54:47 · 3632 阅读 · 0 评论 -
auto_ptr实现原理
原文链接:http://blog.csdn.net/weiwenhp/article/details/8706864智能指针实际上是一个类(class),里面封装了一个指针.它的用处是啥呢?指针与内存说到指针自然涉及到内存.我们如果是在堆栈(stack)中分配了内存,用完后由系统去负责释放.如果是自定义类型,就会自动的去调用你的析构函数.但如果是在堆(heap)中分转载 2017-09-10 11:06:20 · 388 阅读 · 0 评论 -
C++对象切割
原文链接;http://blog.csdn.net/sszgg2006/article/details/7816725当把一个派生类对象赋给一个基类对象时,会发生对象切割。(另外用基类对象强制转换派生类对象也会)对象切割会发生什么呢?#include "stdafx.h"#include using namespace std;class CShape{pu转载 2017-09-10 21:28:14 · 937 阅读 · 0 评论 -
C++map key不存在
C++ map注意事项1、在map中,由key查找value时,首先要判断map中是否包含key。2、如果不检查,直接返回map[key],可能会出现意想不到的行为。如果map包含key,没有问题,如果map不包含key,使用下标有一个危险的副作用,会在map中插入一个key的元素,value取默认值,返回value。也就是说,map[key]不可能返回null。3、map提供了两转载 2017-09-12 15:29:57 · 34577 阅读 · 4 评论 -
C++虚拟继承
http://www.cnblogs.com/biyeymyhjob/archive/2012/11/12/2766277.html虚继承和虚基类的定义是非常的简单的,同时也是非常容易判断一个继承是否是虚继承的,虽然这两个概念的定义是非常的简单明确的,但是在C++语言中虚继承作为一个比较生僻的但是又是绝对必要的组成部份而存在着,并且其行为和模型均表现出和一般的继承体系之间的巨大的差异(包括转载 2017-09-29 09:50:38 · 176 阅读 · 0 评论 -
C++ 继承模板类含有多个参数类型
#include using namespace std; template class MyClass{public: MyClass() { cout }};class MyChild: public MyClass{public: MyChild() {原创 2017-09-29 10:27:15 · 2082 阅读 · 0 评论 -
c/c++ 开发中常见的坑
http://blog.csdn.net/youyoushang/article/details/50032975总结一下自己遇到的坑,吸取教训,避免第二次、第三次在同一个地方扑街。语言类变量初始化问题众所周知,局部变量在函数调用开始时创建,函数调用完成返回时“销毁”。值得注意的是,这里根本没有所谓的销毁、初始化的过程。局部变量的内存分配转载 2017-10-29 22:40:26 · 359 阅读 · 0 评论 -
C++内存管理
C++内存管理[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃转载 2016-08-10 16:22:39 · 352 阅读 · 0 评论