C++
telnetipc
这个作者很懒,什么都没留下…
展开
-
C++11 多线程的使用
C++11增加了线程及线程相关的累,很方便的支持了并发编程,使得编写的多线程程序的可移植性得到了很大的提高.线程的创建用std::thread 创建线程非常的简单,只需要提供线程函数或者函数对象即可,并可以同时指定线程的参数:#include<iostream>#include<thread>#include<chrono>using namespace ...转载 2018-06-01 13:12:59 · 254 阅读 · 0 评论 -
C++中的RAII介绍
摘要RAII技术被认为是C++中管理资源的最佳方法,进一步引申,使用RAII技术也可以实现安全、简洁的状态管理,编写出优雅的异常安全的代码。资源管理RAII是C++的发明者Bjarne Stroustrup提出的概念,RAII全称是“Resource Acquisition is Initialization”,直译过来是“资源获取即初始化”,也就是说在构造函数中申请分配资源,在析构函...转载 2019-08-11 22:11:01 · 516 阅读 · 0 评论 -
C++写文件时覆盖与否的问题
ofstream out("/path/to/file");out<<"write to file"<<endl;out.close();使用上述方式,若文件不存在,自动创建新文件并写入“write to file”;若文件存在,会覆盖掉原文件的内容,写入“write to file”。如果希望每次都写入文件末尾,而不覆盖原文件,可采用以下方式:ofstre...转载 2019-08-01 17:15:23 · 8876 阅读 · 1 评论 -
头文件中定义 const 全局变量应注意的问题
我们知道,在 C++(但不是在 C 语言)中,const 限定符对默认存储类型稍有影响。在默认情况下,全局变量的链接性为外部的,但 const 全局变量的链接性为内部的。也就是说,在 C++ 看来,全局 const 定义就像使用了 static 说明符一样。因此,可以将 const 常量定义在头文件中供工程中的多个其它文件包含引用,并且编译时不会产生变量重复定义的错误。当然,也可以用...转载 2019-07-22 19:49:36 · 1462 阅读 · 0 评论 -
C++中的函数重复定义问题
本人注释:头文件中直接写函数实现会出现重复定义的错误,但是如果是在类中直接写函数实现就不会出现此错误,原因是两个cpp都包含该头文件,相当于头文件中的同一个函数实现被编译了两次,那么就出现了二义性问题,即调用该函数的地方不知道应该使用哪个函数实现.类中写函数实现就没这个问题,因为会被当成inline函数处理.另外,这与函数重载不一样,函数重载由于特征标的存在编译器能够区分调用哪个实现,...转载 2019-07-22 16:49:30 · 5319 阅读 · 0 评论 -
C++编译遇到重复定义问题
一直对编译这个事情不是太明白,想好好学习一下,今天自己写东西试验,遇到了这么个问题,想请教一下,先贴代码// test.h#ifndef JUST_FOR_TEST_H_#define JUST_FOR_TEST_H_struct Test { static int i; void t();};int Test::i = 0;#endif// test.cpp...转载 2019-07-22 16:28:57 · 1332 阅读 · 0 评论 -
boost::shared_ptr:传值还是传引用?
关于shared_ptrshared_ptr,顾名思义,是共享指针。boost库引入shared_ptr为了实现在C++中通过引用计数对堆对象进行内存管理的一种机制。更多关于shared_ptr的信息,可参考shared_ptr template.一般可以通过以下方式使用shared_ptr:boost::shared_ptr<classa> sp1(new c...转载 2019-07-22 13:41:47 · 2384 阅读 · 0 评论 -
C++代码重构遵循的原则
在学数据结构的时候,我常有这样目标——写出能够最大程度复用的代码(算法正确,封装优秀)。我常想——如何能在短时间内达成“算法正确,封装优秀”这样的目标。经过一段时间的摸索,我的结论是:先用C写出正确的算法,再将它改写成C++ class,最后再考虑改为template。这种方法简单可行,基本实现了 逻辑(算法)设计与接口设计两个步骤的分离。在写数据结构代码的场景下,使用这种方法的前提是——你必...转载 2019-07-22 10:29:41 · 328 阅读 · 0 评论 -
cerr和cout的使用
之前一直在用,但就是没在意两者到底有啥却别,今天又想到这个问题,总结下吧(以下的内容均是本人从网上查阅资料看来整理的,暂时还没有查阅官方资料,不保证准确,欢迎讨论)其实大家平常常会用的主要有三个:cout、cerr、clog,首先简单介绍下三者。这三者在C++中都是标准IO库中提供的输出工具(至于有关的重载问题在此不讨论):cout:写到标准输出的ostream对象;cerr:输出...转载 2019-07-21 23:15:59 · 1170 阅读 · 0 评论 -
C++代码命名规范
常用命名法有三种:驼峰命名法、匈牙利命名法、帕斯卡命名法。这三种命名方法各有千秋,以庄子的齐物论来说就是“道无终始,物有死生,不恃其成”。我们要“吸百家之长,圆我代码功夫”,废话说了几行了,综合出来的代码规范如下:一、标识符1、简单、合理、准确的英文单词(不要缩写),切忌汉语拼音。(eg:不要把CurrentWidth写出NowWidth)2、不要仅靠大小写区分...转载 2019-07-21 20:41:03 · 248 阅读 · 0 评论 -
C++ 11结构体内直接赋初始值
C++11添加了很多新特性,使C++看上去更加的灵活和面向对象,其中对struct的修改也值得关注。 我们知道,以前struct(包括类class,两者概念是差不多的)是杜绝在其体内直接给成员变量赋初始值的,但是现在可以给每个成员变量赋予默认的初始值,如下:struct Student{ char* name = nullptr; unsigned int age =...转载 2019-07-24 19:18:58 · 3396 阅读 · 0 评论 -
C++中std::sort/std::stable_sort/std::partial_sort的区别及使用
某些算法会重排容器中元素的顺序,如std::sort。调用sort会重排输入序列中的元素,使之有序,它默认是利用元素类型的<运算符来实现排序的。也可以重载sort的默认排序,即通过sort的第三个参数,此参数是一个谓词(predicate)。谓词是一个可调用的表达式,其返回结果是一个能用作条件的值,即返回一个bool类型的值。标准库算法所使用的谓词分为两类:一元谓词(un...转载 2019-07-24 11:01:26 · 625 阅读 · 0 评论 -
std::async介绍与实例
C++11中引入了std::async什么是std::asyncstd::async()是一个接受回调(函数或函数对象)作为参数的函数模板,并有可能异步执行它们.template<class Fn, class... Args>future<typename result_of<Fn(Args...)>::type> async(launch poli...转载 2019-09-05 18:00:48 · 2328 阅读 · 0 评论