
c/c++ programming language
LN-Curiosity
这个作者很懒,什么都没留下…
展开
-
字符编码ASCII,Unicode和UTF-8
1.ASCII码(7bits) 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。 上个世纪60年代,美国制定了一套字符编码,转载 2017-02-11 11:14:00 · 415 阅读 · 0 评论 -
c++ stl queue(FIFO,容器配接器)
1.queue queue是一种先进先出的数据结构,它有两个出口。queue允许新增元素、移除元素、从最底端加入元素、取得最顶端元素。但除了最底端可以加入、最顶端可以取出外,没有任何其他方法可以存取queue的其它元素。换言之,queue不允许有遍历行为。 将元素推入queue的操作称为push,将元素推出queue的操作称为pop。 以某种既有容器为底部结构,将其接口改变...原创 2018-02-05 10:08:22 · 2406 阅读 · 0 评论 -
c++ stl stack(FILO,容器配接器)
1.stack stack是一种先进后出的数据结构,它只有一个出口。stack允许新增元素、移除元素、取得最顶元素。但除了最顶端外,没有任何其他方法可以存取stack的其他元素。换言之,stack不允许有遍历行为。 以某种既有容器作为底层结构,将其接口改变,使之符合“先进后出”的特性,形成一个stack,是很容易做到的。deque是双向开口的数据结构,若以deque为底部结构并封...原创 2018-01-29 10:32:48 · 485 阅读 · 0 评论 -
c++ stl deque(双向开口的分段连续线性空间)
1.deque vector是单向开口的连续线性空间,deque则是一种双向开口的连续线性空间。所谓双向开口,意思是可以在头尾两端分别做元素的插入和删除操作。vector当然也可以在头尾两端进行操作,但是其头部操作效率奇差,无法被接受。 deque和vector的最大差异,一在于deque允许于常数时间内对起头端进行元素的插入或移除操作,二在于deque没有所谓容量capacity...原创 2018-01-27 20:48:03 · 790 阅读 · 0 评论 -
c++ stl list(环状双向链表)
1.list 相较于vector的连续线性空间,list就显得复杂很多,它的好处是每次插入或删除一个元素,就配置或释放一个元素的空间。因此,list对空间的运用有绝对的精确,一点也不浪费。而且,对于任何位置的元素插入和元素移除,list永远是常数时间。 list的节点结构:template <class T>struct __list_node{ type...原创 2018-01-09 10:32:36 · 5504 阅读 · 0 评论 -
c++ stl vector(针对扩充空间策略)
1.vector vector的数据安排以及操作方式,与array非常相似,两者的唯一差别在于空间的运用的灵活性。vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。因此,vector的运用对内存的合理利用与运用的灵活性有很大的帮助。vector的实现技术,关键在于对其大小的控制以及重新配置时的数据移动效率。2.函数成员2.1构造函数:/// Cre...原创 2018-01-04 17:29:08 · 2452 阅读 · 1 评论 -
c++ stl 迭代器iterators(traits编程技法)
文章目录1.1 迭代器设计思维-stl关键所在1.2 迭代器是一种smart pointer1.3 迭代器相应型别(associated types)1.4 traits编程技法-stl源代码门匙1.4.1 value type1.4.2 different type1.4.3 reference type1.4.4 pointer type1.4.5 iterator_category1.5 s...原创 2019-02-10 15:30:15 · 1279 阅读 · 0 评论 -
c++ stl 内存基本处理工具(与construct()、destroy()并列)
from &amp;lt;stl_uninitialized&amp;gt;1.1 uninitialized_copy()template &amp;lt;class InputIterator, class ForwardIterator&amp;gt;ForwardIterator uninitialized_copy(InputIterator first, InputIterator last, ForwardI...原创 2019-02-18 17:57:23 · 1913 阅读 · 0 评论 -
c++ stl allocator(具备次配置力sub-allocation)
1.1 alloc(具备次配置力sub-allocation的sgi空间配置器)sgi stl的每一个容器都已经指定其缺省的空间配置器为alloc。例如:template&amp;amp;amp;amp;amp;lt;class T,class Alloc = alloc&amp;amp;amp;amp;amp;gt;class vector{ ... };1.2 sgi特殊的空间配置器std::alloc内存配置操作由alloc:原创 2019-01-25 20:52:29 · 831 阅读 · 1 评论 -
c++ 编程思想 RAII
在C语言中,资源管理是一个极为繁琐易错的工作,大多复杂的C系统都面临着内存泄露、悬挂指针等问题。这是一方面是由底层语言的特点决定;另一方面也是由于C语言特性相对较少,严重依赖程序员进行正确的资源管理,缺乏有效的支持手段。 C#和C++两门语言的定位不同,它们在资源管理方面采取了两种截然不同的方式:一为GC,一为RAII。GC让程序建立在更高的抽象层次上,使资源管理变得更方便,更安全;而C++...转载 2018-02-26 10:47:44 · 414 阅读 · 0 评论 -
c++ 类的静态成员
1.概述: 有的时候类需要它的一些成员与类本身直接相关,而不是与类的各个对象保持关联。2.实例:ClassStaticMember.hnamespace NameSpaceForTest{class SimpleClassForTest{public: SimpleClassForTest(); ~SimpleClassForTest(); st原创 2017-11-06 15:51:24 · 317 阅读 · 0 评论 -
c/c++ 类型限定词volatile
限定词volatile告诉编译器该变量除了可被程序改变以外还可被其他代理改变。典型地,它被用于硬件地址和其他并行运行的程序共享的数据。 例: val1 = x; /* 一些不使用x的代码 */ val2 = x; 一个(优化的)编译器可能注意到您两次使用了x,而没有改变它的值。它将把x临时存储在一个寄存器中。接着,当val2需要x时,可以通过从寄存器而非初始的内存位置中读取该值以节转载 2017-10-07 11:40:41 · 486 阅读 · 0 评论 -
c++ 派生类和基类之间的特殊关系
1.概述1.基类指针可以在不进行显式类型转换的情况下指向派生类对象 2.基类引用可以在不进行显式类型转换的情况下引用派生类对象2.实例2.1实例一#include namespace SimpleTest{using namespace std;class CParent{public: CParent(); virtual ~CParent(原创 2017-09-23 22:04:02 · 1224 阅读 · 1 评论 -
c/c++ #define中#和##运算符的使用
1.在#define中使用参数 函数调用和宏调用之间的重要差异,程序运行时,函数调用把参数的值传递给函数。而编译前,宏调用把参数的语言符号传递给程序。 2.#运算符:利用宏参数创建字符串 如果x是一个宏参数,那么#x可以把参数名转换为相应的字符串,该过程称为字符串化。#include <stdio.h>#define POUT(x) printf("---" #x "---\n")int m原创 2017-09-03 21:11:07 · 1412 阅读 · 0 评论 -
c/c++ {}代码块的使用
如果在代码块”{}”中定义了变量,则该变量的生存周期和作用域将被限制在该代码块内。代码#include <iostream>class SimpleTestClass{public: SimpleTestClass() { std::cout<<"the SimpleTestClass creates"<<std::endl; } SimpleTe原创 2017-08-20 22:58:39 · 14098 阅读 · 0 评论 -
c++ string
基本说明 要想使用标准C++中string类,必须要包含#include<string>,而不是#include<string.h>(字符串处理函数),using std::string/using spacename std; string类是基于下述模版定义的: template<class charT,class traits = char_traits<charT>,class A原创 2017-03-04 08:57:30 · 297 阅读 · 0 评论 -
c/c++ int,float,short 大小端转换函数
1.unsigned int(uint32_t)大小端转换函数unsigned int BLEndianUint32(unsigned int value){ return ((value & 0x000000FF) << 24) | ((value & 0x0000FF00) << 8) | ((value & 0x00FF0000) >> 8) | ((value & 0xFF00原创 2017-03-17 16:07:58 · 15514 阅读 · 0 评论 -
c++ stl map
1.map2.实例原创 2017-07-31 17:09:06 · 379 阅读 · 0 评论