
C/C++
文章平均质量分 73
andy cong
何以解忧,唯有编程
展开
-
浅谈std::move和std::forward原理
本文主要整理了C++11中std::move和std::forward的原理, 这对理解C++的移动拷贝有很重的意义。原创 2020-07-07 23:20:14 · 3771 阅读 · 1 评论 -
shared_ptr和weak_ptr智能指针结合使用的一个实例
结合shared_ptr、weak_ptr 一个实例。 感觉这个例子很好, 结合了很多知识技术。这个实例功能是非常简单模拟实现std::vector。 (只是非常简单一些操作),当然也可以继续扩展,甚至扩展为模板,主要是用于学习。主要用StrBlob来实现,通过类底层数据成员data(std::shared_ptr >)来动态管理资源。 然后使用StrBlob的伴随类StrBlobPtr。原创 2016-10-29 20:21:17 · 2958 阅读 · 0 评论 -
C++顺序容器类中对象初始化、赋值、swap
顺序容器中,除了使用列表和一对迭代器初始化对象时,列表中元素和求迭代器所引用的值跟初始化的对象兼容即可。其他的都需要保证类型完全相同,包括赋值,swap.如下表。原创 2016-10-07 20:09:56 · 1462 阅读 · 0 评论 -
C++A Text-Query Program Design(文本查询程序设计)
前言 本文内容是基于C++Primer 5th一个文本查询程序。中文版(参见12.3节,第430页),英文版($12.3 p.484)。我为什么会选择记录这个文章? 因为作者对这个程序进行了很全面的分析(至少我是这么认为),如何设计,如何优化、如何实现,都进行一番阐述。掌握这个类设计以及实现对初学者来说将是非常有用(我就是初学者哈)。 本文不对代码细节讨论原创 2016-10-31 20:30:15 · 1628 阅读 · 3 评论 -
Message and Folder Class Design
Introduce:As an example of a class that needs copy control in order to do some bookkeeping,we’ll sketch out two classes that might be used in a mail-handling application. Theseclasses, Messa原创 2016-11-07 09:58:44 · 1142 阅读 · 0 评论 -
StrVec and String Class Design(C++Primer 5th)
Quoted C++ Primer 5th Chapter 13.5 Classes That Management Dynamic Memory(P.524)Design a simplification of the library vector classIntroduction: Recall that the vector class stores its eleme原创 2016-11-07 20:00:01 · 1382 阅读 · 0 评论 -
Copy Control and Resource Management(valuelike or pointerlike)
Copy Control and Resource Management we first have to decide what copying an object of our type will mean. In general, we have two choices: We can define the copy operations to make the class原创 2016-11-13 13:58:34 · 523 阅读 · 0 评论 -
一个友元类使用误区(C++)
这个问题,我困扰了好一会。决定记录一下原创 2016-12-09 21:10:36 · 2874 阅读 · 0 评论 -
MySql常用命令总结
1、、创建数据库命令:create database <数据库名>例如:建立一个名为xhkdb的数据库mysql> create database xhkdb;转载 2016-08-07 20:35:54 · 805 阅读 · 5 评论 -
Linux-(C/C++)动态链接库生成以及使用(libxxx.so)
linux静态库生成与使用:http://www.cnblogs.com/johnice/archive/2013/01/17/2864319.htmlLinux中so文件为共享库,与windows下dll类似,不过实现要简单。so可以供多个进程使用,不同进程调用同一个so文件,所使用so文件不同。so文件源程序不需要main函数,有也不会被执行。下面通过一个简单例子,来学习.so原创 2016-07-24 17:29:54 · 49977 阅读 · 7 评论 -
window和linux编译boost库
windows(vs2015)1、下载boost版本:http://www.boost.org/users/download/2、下载之后解压:3、编译32位的boost库(64位类似)开始任务栏打开Visual Studio 2015,32位系统选择VS x86本机工具命令提示符。然后切换到boost源代码文件夹。运行boosttrap.bat.执行如下操作,对boost进行编译(msvc版本1...原创 2018-03-20 20:00:51 · 454 阅读 · 0 评论 -
浅谈linux的命令行解析参数之getopt_long函数
前言 在linux中,经常需要各种命令,通常情况下都会带各种参数,而这些参数是如何解析的呢?通常使用GNU C提供的函数getopt、getopt_long、getopt_long_only函数来解析命令行参数。一、关于命令行参数 命令行参数可以分为两类,一类是短选项,一类是长选项,短选项在参数前加一杠"-",长选项在参数前连续加两杠"--",如下表(ls 命令参数)所示,...原创 2018-05-05 18:03:13 · 72727 阅读 · 11 评论 -
C++Iterator Categories(迭代器种类)
迭代器支持操作:Input iterators : ==, !=, ++, *, -> eg:istream_iteratorOutput iterators : ++, * eg:ostream_iteratorForward iterators : ==, !=, ++, *,原创 2016-10-19 19:04:44 · 1362 阅读 · 0 评论 -
C++Primer 第五版 (课本习题答案)
找了很久才找到的。。非常好https://github.com/pezy/CppPrimer#c-primer-5th-edition-exercise-answers原创 2016-04-14 22:34:19 · 13471 阅读 · 9 评论 -
C++ 左值引用和右值引用(C++11特性)
前言引用就是别名(alias)。所谓别名,就是对已存在的对象另起一个名字。本身含义并不难理解,但与其它概念一组合,就成了使用难点。再加上新标准提出了新的一种引用-右值引用,引用这一概念就变得更加难以理解和使用。正文随着新标准(新标准往往就是新的技术)的提出,引用这一概念分成两类:左值引用、右值引用。其中左值引用是最常用的一种,而右值引用则是语言使用上的一种革新。1.左值引用左值转载 2016-04-30 18:34:29 · 558 阅读 · 0 评论 -
Linux-(C)文件读写实例(系统调用/标准I/O库)
从实现的角度:系统调用直接对文件和设备进行访问和控制的的一组底层接口, 而标准I/O库为地城I/O调用提供了一个通用的接口,系统调用直接跟底层打交道,系统调用移植性远不如标准I/O库好。从性能的角度:使用系统调用会影响系统的性能。与库函数调用相比,系统调用的开销要大些,因为在执行系统调用时,Linux必须从运行用户代码切换到执行内核代码,然后再返回用户代码。减少这种开销的一个好办法是,在程序中尽量减少系统调用的次数,并且让每次系统调用完成尽可能多的工作。比如,每次读写大量的数据而不是每次仅读写一个字符。原创 2016-07-24 14:27:42 · 15360 阅读 · 0 评论 -
Linux-(C)多线程学习(入门)
另外自己写了一个多线程程序,实现两个程序聊天思路: 两个程序分别创建两个线程 (当然创建一个也行,跟主线程就两个,但为了代码美观,毕竟学习) 然后一个程序中两个线程分别读写管道 fofi1 fofi2。 另一个程序不同之处,读写管道相反 fofi2 fofi1原创 2016-07-26 19:33:43 · 3500 阅读 · 0 评论 -
Linux-GCC学习(C/C++)
GNU CC(GNU Compiler Collection, GNU编译器套件,简称GCC), 是GNU开发的编程语言编译器。GCC命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。现在很多程序员都应用GCC,怎样才能更好的应用GCC。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言原创 2016-07-15 20:58:22 · 2347 阅读 · 1 评论 -
cc、gcc、g++、CC的区别概括(好文章)
误区一:gcc只能编译C代码,g++只能编译C++代码。两者都可以,但请注意:(1)后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是C++程序,注意,虽然C++是C的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。(2)编译阶段,g++会调用gcc,对于C++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只转载 2016-07-17 00:02:54 · 1197 阅读 · 2 评论 -
Linux-(C)网络编程学习socket(初步)
3、TCP、UDP(区别)3.1、TCP有点 3.1.1、数据可靠、不重复 3.1.2、假如数据块过大(一次发送不出去),那么tcp将会拆分成更小块数据发出去,无需程序员处理3.2、TCP缺点 3.2.1、需要保持一个链接,给系统带来开销大 3.2.2、传输效率低3.3、UDP优点(优缺点基本跟TCP相反) 3.3.1、不需要保持一个链接 3.3.2、不会因为对方没有接受数据而带来系统开销 3.3.3、对网络带宽比比TCP小3.4、UDP缺点 3.4.1、没办法保证数据正确传输出去(转载 2016-07-28 15:56:35 · 2689 阅读 · 0 评论 -
Linux-C 聊天程序学习(socket+pthread)
主要学习socket编程。实现client跟server随意聊天(TCP协议)。只允许一个server跟一个client 聊天,不能群聊利用多线程实现,聊天双方各创建两个线程:实现发送和接受消息。(代码都有详细注释)。原创 2016-07-28 20:00:45 · 6217 阅读 · 2 评论 -
C++ Standard Exceptions(回顾基础)
/* Exercise 5.23: Write a program that reads two integers from the standard input and prints the result of dividing the first number by the second.*/#include int main(void){ int a, b;原创 2016-10-08 20:57:54 · 869 阅读 · 0 评论 -
Linux-(C/C++)动态内存分配malloc以及相关学习
1、C/C++内存分类(引用C++ Primer )(对象在C语言中可以理解为变量) 1.1、静态内存:静态内存用来保存局部static对象、类static数据成员、以及定义在任何函数之外的变量 1.2、栈内存:栈内存用来保存定义在函数内非static对象。(当然包含函数参数开辟的内存) 1.3、动态内存:每个程序还有一个内存池,这部分内存被称作自由空间(free stor原创 2016-07-18 20:58:18 · 9394 阅读 · 0 评论 -
浅谈C++普通指针和智能指针管理动态内存的陷阱
前言: C++中动态内存的管理主要是使用new/delete表达式和std::allcator类。 为了管理动态内存更加安全,C++11新标准库推出了智能指针。这里只讨论使用他们在使用过程常见的错误以及解决方法,不过多讨论语法。一、使用new和delete管理动态内存三个常见的问题。1、忘记释放(delete)内存。忘记释放动态内存会导致人们常说的 “内存泄漏(memory leak)” 问题 ,因为这种内存永远不可能归还系统,除非程序退出。比如在某个作用域的代码如下:向系统申请了一原创 2016-11-04 13:51:21 · 6898 阅读 · 0 评论 -
C++拷贝构造函数的参数为什么必须使用引用类型(无限递归)
我转载这个主要是因为这个风趣幽默哈。。转自:http://blog.youkuaiyun.com/tunsanty/article/details/4264738 在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。 但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题, 你会怎么回答? 或许你会回答为了减少一转载 2016-04-26 21:38:47 · 3815 阅读 · 5 评论