- 博客(22)
- 资源 (11)
- 收藏
- 关注
原创 C++中placement new操作符(经典)
placement new是重载operator new的一个标准、全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版本)。它的原型如下:void *operator new( size_t, void *p ) throw() { return p; }首先我们区分下几个容易混淆的关键词:new、......
2019-04-29 22:59:49 1300
原创 减少使用make_pair
在写代码的时候,我们经常在使用map的时候同样使用着make_pair,例如以下的代码std::map<int,Obj> m;int i = 0;Obj1 obj1;m.insert(make_pair(i,obj1));为什么说make_pair效率很低呢,因为make_pair的返回值是pair对象,会造成什么结果呢?obj1拷贝到临时的pair对象中,临时的p...
2019-04-23 21:20:44 645
原创 vector,map以及list性能对比
虽然说map是关联容器,一般关联的数据都使用map来存储,但是实际上vector或者list也是可以代替这样的功能。具体实现可以看https://blog.csdn.net/Think88666/article/details/89430259比如vector保存一个结构体:struct stData{ int key; int value;}又或者用ve...
2019-04-21 11:59:17 19845 2
原创 vector或list保存结构体或对象时的查找方法
vector或者list内部保存结构体或者对象时,可以实现和map一样的效果,但是千万不要手动遍历容器,这样会导致程序的性能下降数倍,最好的方法是使用std::find或者std::find_if来查找,速度快的多!代码如下:1、std::find例子#include <iostream>#include <vector>using namespace ...
2019-04-21 11:57:39 2667
原创 vector中存放对象和指针的区别
这里先说出结论:vector中push_back对象时,会调用对象的拷贝构造函数。而且在vector空间不足时,继续push_back,vector会将之前的所有对象都拷贝构造到一块更大的空间里。也就是说对象如果较大,那么最好用vector保存指针以减少调用拷贝构造 造成的消耗,如果vector存指针,那么也就拷贝指针而已,消耗非常小。如果实在需要使用vector保存对象,那么尽量利用c++1...
2019-04-20 10:38:12 21022 5
原创 为什么空类的大小是1而不是0?
试想,如果一个类的大小是0,那还可以初始化吗?有什么意义呢?为此编译器就自动给空类加了一个字节,让其可以实例化成具体的对象。
2019-04-18 22:37:20 692
原创 C++常用库之网络库
C++一个很大的用途就是作为网络层组件的开发语言。C++开发的第三方网络库也比较多。其实,c语言下的网络库也不少。现在简单介绍一下。ACE库ACE是一个大型的中间件产品,代码有几十万行,非常宏大,里面使用了一堆的设计模式,架构了一层又一层,具体使用的时候, 要根据情况,要看从那一层来进行使用。而且,它也支持跨平台。现在基本上都把ACE当成一个框架,它的主要应用场景是高...
2019-04-16 20:43:39 25607 3
原创 char[0]不是你想用想用就能用
前言新了解char[0]的少年们很愉悦的将其应用到了项目中,多看一条注意事项可以减少不必要的痛苦。引言在C语言中char[0]是一种数组的特殊用法,用于标记一个指针在一个结构体最后:例如:struct node{int number;//后面的数据长度char data[0];//这是一个指针,不占空间}sizeof(node)就等于sizeof(int);更......
2019-04-14 21:42:32 13471
原创 怎样为std::map的自定义键值
1、重载<运算符——也就是重载key类的小于运算符#include <map>#include <iostream>using namespace std;struct stSubKey //自定义key{ int m_nKey1; int m_nKey2; stSubKey(int nKey1, int nKey2) :m_nKey1(...
2019-04-14 16:13:17 10168
原创 c/c++获取时间戳以及毫秒计算
1、获取利用time函数当前的时间戳(秒)#include <iostream>#include <time.h>using namespace std;int main(){ time_t t; time(&t); cout << t << endl; return 0;}2、毫秒级...
2019-04-14 13:18:31 10262 4
转载 svn log显示最新几行
svn log | head -n 10https://blog.csdn.net/liuj8929/article/details/77944199
2019-04-11 16:37:31 1879
转载 SVN:取消对代码的修改
http://blog.sina.com.cn/s/blog_5432f2730100vmz4.html取消对代码的修改分为两种情况:第一种情况:改动没有被提交(commit)。这种情况下,使用svnrevert就能取消之前的修改。svnrevert用法如下:#svnrevert[-R] something其中something可以是(目录或文件的)相对路径...
2019-04-10 14:16:01 362
转载 vs编译器内存查看和分析
首先打开vs编译器,创建好项目,并且将代码写进去,这里就不贴代码了,你可以随便的写个做个测试。 调试的时候做好相应的断点,然后点击开始调试。 程序调试之后会在你设置断点的地方暂停,然后选择调试->窗口->内存,就打开了内存数据查看的窗口了。 内存查看的窗口可以开启四个,在这里方便的进行对比。 在内存窗口的地址栏中输入你...
2019-04-10 09:19:45 3540
转载 C语言中“&=,^=,|=”分别表示什么意
C语言中“>>=,<<=,&=,^=,|=”分别表示什么意思?1、C语言中的 >>= 意思为:右移后赋值代码示例为:x = 8;x >>=3;右移后结果为:000000000000000000000000000000012、C语言中的<<= 意思为:左移后赋值代码示例为:x ...
2019-04-09 20:09:32 140539 5
原创 linux下的find文件查找命令与grep文件内容查找命令
linux下的find文件查找命令与grep文件内容查找命令 在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区的。 区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。 (2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式......
2019-04-09 17:09:24 549
转载 svn冲突问题详解 SVN版本冲突解决详解
(摘自西西软件园,原文链接http://www.cr173.com/html/46224_1.html)解决版本冲突的命令。在冲突解决之后,需要使用svnresolved来告诉subversion冲突解决,这样才能提交更新。冲突发生时,subversion会在WorkCopy中保存所有的目标文件版本(上次更新版本、当前获取的版本,即别人提交的版本、自己更新的版本、目标文件。开发人员都知道代...
2019-04-09 10:58:09 709
转载 SVN命令的使用和功能详解
在linux上使用svn,熟悉这些命令非常重要!命令的使用1、检出svncohttp://路径(目录或文件的全路径) [本地目录全路径]--username 用户名 --password 密码svncosvn://路径(目录或文件的全路径) [本地目录全路径]--username用户名 --password 密码svncheckouthttp://路径(目录或...
2019-04-09 10:44:27 460
原创 GDB调试程序
gcc/g++编译器是我们写编译C/C++程序时离不开的编译工具,而gdb又是调试C/C++程序的利器,这一篇文章我们记录一下它们的惯常用法。gcc/g++常用编译选项 选项 作用 -c 生成可目标文件,但不进行链接 -o 指定生成文件的文件名 -g 在目标文件中添加调试信息,便于gdb调试或objdump反汇编 -Wall ...
2019-04-08 21:44:55 754
原创 关于printf和sprintf打印或者格式化字符时需要注意的
今天在使用sprintf格式化字符串的时候是这样做的 unsigned int i = 88; char buf[20]; sprintf_s(buf, "%d", i); std::cout << buf << std::endl;程序运行结果:这样做看似没有问题,但实际上会出现较大的问题。原因在于%d是格式化有符号整型。看以下代码 unsi...
2019-04-04 20:06:24 888
原创 C/C++不用std::to_string的方式实现整数转字符串
今天使用在项目中需要用到整数转字符串,平时直接std::to_string就搞定了,但是由于项目比较久远,而std::to_string是在c++11中才开始支持的,所以想到了用atoi函数来转换,但遗憾的是在linux下似乎没有该函数,通过查找相关资料,看到了有如下方法实现该转换——sprintf函数 char str[20]; sprintf(str, "%d*%d",100,666)...
2019-04-04 16:51:37 2158
原创 子类调用父类的方法
今天在看某项目源代码时,我看到了这样的代码class B{public: void printB(){ A::PrintA(); }};看了这个代码,我以为printA是类A的static方法,结果找了半天没找到,很尴尬。。。原来子类调用父类就是这样调用的。所有代码如下:class A{public: void printA(){}...
2019-04-01 19:25:51 14725
原创 static_cast与dynamic_cast转换
static_cast用法:static_cast< type-id > ( exdivssion )该运算符把exdivssion转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类和子类之间指针或引用的转换。 进行上行转换(把子类的指针或引用转换成基类表示)是安全的; 进行下行转换(把基类指针或引用转换成子......
2019-04-01 19:11:40 183
Scrollbar_png.zip
2019-11-20
DuiDesigner.rar
2019-11-14
VC AssistantX_适用VS2005.zip
2019-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人