
C/C++
文章平均质量分 91
塔楼
这个作者很懒,什么都没留下…
展开
-
C++中的简单并发
文章目录并行与并发C++11中的并行和并发实现并行与并发首先,并行表示多个任务同时执行,即多个任务处理单元可以同时处理多个任务;并发则表示两个任务交替执行,以达到看似并行的目的,即不用等待上一个任务执行完再执行下一个任务;C++11中的并行和并发实现C++11中主要通过线程的方式作为并发编程的基础,需要包含thread头文件;可通通过get_id获得线程的Id;使用join加入一个线程;在并发编程时,为了能够保持对内存某块区域操作的独占性,需要对该操作设置锁机制。C++11对临界区的保护原创 2021-10-24 17:56:21 · 857 阅读 · 0 评论 -
C++中的数组
数组维度首先,数组是一种符合类型,声明如a[d],d是维度,维度必须是是一个常量表达式。Int a[] = {1,2,3}; Int I = 1; a[i] = 2;//错误,因为i是变量; Constexpr size_t I = 1; a[i] = 2;//正确,i是常量begin和end在数组中的使用数组和vector类似,都有begin...原创 2018-03-12 20:24:13 · 2139 阅读 · 0 评论 -
caffe框架中Blob细则
Blob是一个类模板,封装了SyncedMemory类,作为基本计算单元服务Layer,Net,Solver等。使用同步时必须#include”caffe/syncedmem.hpp”。//Blob中的shape_string()函数 inline string shape_string() const{//使用const的函数,使得传入的this是const的,所以不能对数据成员...原创 2018-03-12 20:18:11 · 270 阅读 · 0 评论 -
Blob的基本用法
Blob简介 在caffe中Blob相当于tensorflow的tensor,即张量,是caffe框架中数据流的基本存储单位,caffe中关于数据的运算和存储都是基于Blob进行的。Blob的使用 Blob是一个模板类,在创建对象时需要制定模板参数,例如:Blob<float> a;//声明一个Blob对象a cout<<"Size: "...原创 2018-03-12 20:13:04 · 11892 阅读 · 0 评论 -
protobuf的使用
在使用protobuf定义数据结构之前,首先使用:syntax = “proto2”或”proto3”来定义protobuf的版本。此处使用protobuf2作为说明,protobuf3y与protobuf2有一些不同,取消了一些关键字的使用,详细见https://developers.google.com/protocol-buffers/docs/cpptutorial定义数据结构之前,使...原创 2018-03-12 20:08:46 · 211 阅读 · 0 评论 -
深入探讨构造函数
1.类的成员的初始化和赋值之间的差异在类的构造函数如果对类的成员使用了初始值列表,则是对这些成员实行了初始化,在这之前,类还未为这些成员初始化;如果在构造函数的函数体内对成员进行赋值,则是对成员进行了赋值,在这之前,类已为这些成员进行了初始化。如下:Sales_data::Sales_data(const string &s,unsigned cnt,double price)...原创 2018-02-10 21:09:58 · 174 阅读 · 0 评论 -
迭代器的使用
**在c++中,有的类型存在迭代器,利用迭代器可以对对象进行间接访问,像指针一样。 迭代器有有效和无效之分,有效的迭代器只想容器的元素或尾元素的下一位置。 有迭代器的类型同时拥有返回迭代器的成员,比如begin和end成员。begin成员返回的容器第一个位置的元素,end成员返回的是容器尾元素的下一个位置。尾后迭代器end是一个不存在的元素,本身无任何含义,但是仅仅是个标记而已。如果容器为空,原创 2018-01-08 00:17:29 · 377 阅读 · 0 评论 -
常函数及其由来
1. this铺垫首先,我们先要了解在c++中的面向对象编程中,当我们调用成员函数时,实际上实在替某个对象调用它。若果mem_function指向对象中的某个成员,则它隐式地指向调用该函数的对象的成员。成员函数通过名为this的额外的隐式参数来访问调用它的那个对象。当我们调用一个成员函数时,用请求该函数的对象地址初始化this。编译器负责把对象的地址传递给成员函数的隐式参数this,可以等原创 2018-01-13 23:05:33 · 463 阅读 · 0 评论 -
C++中的static深度剖析
C++中的staticstatic的作用 在C语言中,static的作用有两个: 一是使得static声明的变量只能在当前文件中被访问,即当其他的文件中想通过像使用全局变量一样(如:extern int i;)使用static声明的变量时,就会在link的时候出错。其功能就相当于使得该文件中static声明的变量隐藏于该文件中而不被其他文件所发现。 其第二个作用是使得s原创 2017-09-28 00:45:44 · 283 阅读 · 0 评论 -
const的普通用法及其在对象中的使用
const的普通用法 在C++中,常数在编译时是放在代码段的,所以与其他的变量不同,常数是要在编译器做编译时就要知道值的。比如说: const int bufsize;//这是错误的写法。因为在编译时编译器不知道其值,所以正确的写法是在声明时就要赋值。 如果在其他的文件中含有一个叫做bufsize的变量,那么在当前的文件中做了这样的事情:extern const int bufsize;//这原创 2017-09-19 01:44:22 · 556 阅读 · 0 评论 -
引用的使用及其本质
引用的本质: 在C++中,为了避免像指针一样去访问某个变量,引入了引用这一类型。实际上,虽然确实在使用上没有了指针的复杂性,但是引用的本质实际上就是通过const指针实现的。所以,可以从这两个方面来理解引用: ü 引用是一个左值的标签,引用就代表着所引用的那个变量。可以通过引用改变所代表的那个变量的值。如: Int x = 10; Int &原创 2017-09-19 01:31:29 · 521 阅读 · 0 评论 -
为什么要使用拷贝构造?
先构造这样的代码:static int objectCount = 0;class HowMany {public: HowMany(){objectCount++;print("HowMany()");} //HowMany(const HowMany& o){objectCount++;print("HowMany(const HowMany&)");} HowMan原创 2017-09-27 00:54:15 · 554 阅读 · 0 评论 -
再说引用
函数的参数传引用、指针、值的本质区别和不同参数传入引用时,实际上是一个标签化的过程,一般需要传入的是一个变量,即可以作为左值的东西。有这样一种解释:在数值(注意数值和变量的区别)传入的过程中,会先将参数赋值给一个const 类型的变量,然后再由该变量将值传给函数中的参数。这样一来,如果函数的参数类型不是const的,则会发生错误,因为const的变量不允许赋给非const的变量。假设有这样一个函数的原创 2017-09-23 01:30:03 · 218 阅读 · 0 评论 -
C++类的组合及常类型
类的组合引入在实际应用中,一个类的数据成员不仅可以是基本数据类型,还可以是其他类的对象,所以,就引入了类的组合。类的组合在一个类中,嵌入另一个类的对象作为数据成员,称为类的组合。该内嵌对象称为对象成员,也称为子对象。在对象的初始化中,对对象成员进行初始化时,与对基本数据成员的初始化有所不同,例如:class A{类名1 对象成员1;类名2 对象成员2;原创 2016-12-19 18:06:28 · 1096 阅读 · 0 评论 -
初探多态性
多态性多态性分类多态性分为编译时多态性和运行时多态性。编译时多态性:一个源程序经过编译、连接,成为可执行程序的过程是把可执行代码连编到一起的过程。其中,在运行之前就完成的联编称为静态连编,即编译时多态性。优点是:函数调用速度快、效率高。 静态多样性主要包括:重载和模板重载主要是函数名相同,其他的可以不同,所以,调用某一函数时,就是通过返回类型、参数类型、参数个数等来原创 2016-12-24 22:52:23 · 254 阅读 · 0 评论 -
友元
友元友元的引入在C++中,私有成员对于外部的对象和方法来说是不可访问的,但是,在有时候需要在类的外部访问私有成员或保护成员,因此,就需要提供一种机制使得这一需求得以实现,而友元就为私有成员或保护成员打开了一扇通往类外部的大门。如果没有友元机制,外部函数访问类的私有数据必须通过调用公有的成员函数,这在需要平凡调用私有成员数据的情况下,会带来较大的开销,从而降低的程序运行效率。友元函数原创 2016-12-15 17:51:32 · 332 阅读 · 0 评论 -
C++派生相关
派生相关在派生中,需要注意以下几件事:1. 不同的继承方式使得派生类对基类中的成员访问属性不同。一般可以总结如下: 公有继承:不能直接访问基类中的私有成员,但能间接访问。能访问保护和公有成员。 保护继承:不能直接访问私有继承,能访问保护和公有成员。 私有继承:私有成员不可直接访问,公有和保护成员可访问。可总结原创 2016-12-21 17:21:14 · 312 阅读 · 0 评论 -
C++中的this指针
This指针在C++中,一个类的对象总是共享类的成员函数,也就是说,当在生成一个对象时,只生成它的数据成员,而它的成员函数则是保存在原来的类所在的函数代码段。C++中是通过this指针来引用函数的。即:C++中为成员函数提供了一个名字为this的指针,称为自引用指针。每当创建一个对象时,系统就把this指针初始化为指向当前对象,即this指针的值就是当前调用成员函数的对象的起始地址。所以,原创 2016-12-14 18:57:26 · 269 阅读 · 0 评论 -
C++_ConstructorAndDestructor
其实,在C++中,构造函数和析构函数并无其他的难处,在应用中只需要注意以下几点即可:构造函数和析构函数:构造函数引入: 在C++中,不能直接对数据成员在声明时就赋初值,必须在函数中对其赋初值,一般在构造函数中对其进行赋值。如果将类看作一个封闭的个体,那么构造函数就是作为对这个封闭的个体的对外的接口,用户可以通过它(它们)对其内部的成员进行初始化。当然,也可以是普通成员函数。原创 2016-12-14 18:55:30 · 1689 阅读 · 0 评论