C++
jx_feixian
这个作者很懒,什么都没留下…
展开
-
概念——内存空间分段
**BSS段:**bss segment,通常是指用来存放程序中未初始化的全局变量的一块内存区域。**数据段:**data segment,通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。**代码段:**code segment,通常是指用来存放程序执行代码的一块内存区域。1).这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读,某些架构也允许代码段为可原创 2017-10-11 20:54:36 · 792 阅读 · 0 评论 -
C++ 解析Json——jsoncpp
C++ 解析Json转载 2019-01-21 11:34:28 · 109 阅读 · 0 评论 -
STL — Stack/Queue容器
1.1、stack容器基本概念 stack是一种先进后出(First In Last Out,FIFO)的数据结构,它只有一个出口,形式如图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有其他任何方法可以存取stack的其他元素。stack不允许遍历行为。 有元素入栈的操作称为push,将元素推出stack的操作称为pop。 1.2、stack没有迭代器 stac...转载 2019-01-03 00:14:02 · 65 阅读 · 0 评论 -
STL — Deque容器
1、deque容器基本概念 vector容器是单向开口的连续内存空间,deque则是一种双向开口的连续线性空间。所谓的双向开口,意思是可以在头尾两端分别做元素的插入和删除,当然,vector容器也可以在头尾两端插入元素,但是在其头部操作效率奇差(单向开口,需要移动数据),无法北接受。 Deque容器和vector容器最大的差异,一在于deque允许使用常数项时间对头端进行元素的插入和删除。二在于...转载 2019-01-02 23:45:01 · 104 阅读 · 0 评论 -
STL — Vector容器
1、Vector容器基本概念 vector的数据安排以及操作方式,与array非常相似,两者的唯一差别在于空间的运用的灵活性。Array是静态空间,一旦配置了就不能改变,要换大一点或者小一点的空间,可以,一切琐碎得由自己来,首先申请一块新的空间,然后将旧的空间里的数据搬移到新空间,在释放原来的空间。Vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素,不需要用户去管理内存...转载 2019-01-02 22:58:52 · 99 阅读 · 0 评论 -
STL — Set/Multiset容器
1.1、Set容器基本概念 Set的特性是,所有元素都会根据元素的键值自动被排序。Set的元素不像map那样可以同时拥有实值和键值,set的元素即是键值又是实值。set不允许两个元素有相同的键值。 我们可以通过set的迭代器改变set元素的值吗?不行,因为set元素值就是其键值,关系到set元素的排序规则。如果任意改变set元素值,会严重破坏set组织,换句话说,set的iterator是一种co...转载 2019-01-07 00:08:44 · 86 阅读 · 0 评论 -
STL — List容器
1、List容器基本概念 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点组成,结点可以在运行时动态生成。每个结点包括两部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相较于vector的连续性空间,list就显得复杂许多,它的好处是每次插入或者删除一个元素,就是配置或者释放一个元素的空间。因此,list...转载 2019-01-06 23:21:28 · 111 阅读 · 0 评论 -
STL — 简介
STL — 简介 1、STL概论 长久以来,软件界一直希望建立一种可重复利用的东西,以及一种得以制造出“可重复运用的东西”的方法,让程序猿的心血不止于随时间的迁移,人事变动而烟消云散,从函数、类、函数库、类库、各种组件,从模块化设计到面向对象,为的就是复用性的提升。 复用性必须建立在某种标准之上,但是在许多环境下,就连软件开发最基本的数据结构和算法都未能有一套标准。大量程序猿被迫从事大量重复的工作...转载 2019-01-01 23:49:46 · 160 阅读 · 0 评论 -
概念——静态库/动态库
库通俗的说就是把一些常用函数的目标文件打包在一起,提供相应函数的接口,便于程序员使用。库是别人写好的现有的,成熟的,可以复用的代码,我们只需要知道其接口如何定义,便可以自如使用。 现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。比如我们常用的printf函数,就是c标准库提供的函数。我们在使用只需要包含相应的头文件就可以使用(非静态编译还要有相应的库文原创 2017-10-11 20:57:33 · 159 阅读 · 0 评论 -
程序调试
1、查看时候是最新代码编译生成的可执行文件/库,查看是否有自己新加的代码strings a.out | grep “my add code” 2、查看库/可执行文件依赖了哪些库ldd libxxx.a3、查看编译后的可执行文件中的符号信息,如函数名编译后变成了什么nm a.out——binutil工具4、gdb常用命令记录原创 2017-10-11 20:44:51 · 213 阅读 · 0 评论 -
google_protobuf数据类型
原文链接:[google_protobuf数据类型(https://blog.csdn.net/superbfly/article/details/17920383) 要通信,必须有协议,否则双方无法理解对方的码流。在protobuf中,协议是由一系列的消息组成的。因此最重要的就是定义通信时使用到的消息格式。 Protobuf消息定义 消息由至少一个字段组合而成,类似于C语言中的结构。每个字段...转载 2019-01-21 11:47:26 · 278 阅读 · 0 评论