STL stack

stack栈是一种先进后出的数据结构,记得大学时期的计算器就是使用栈的数据结构实现,当然这种数据结构使用场景居多。Constructor stackstd::stack first; std::stack second(first); std::stack<int, std;:vector> third; //使用vector初始化stack压栈,出栈stack压栈函数...
阅读(91) 评论(0)

STL map

stl中的map和set一样,都是关联性容器,内部实现是红黑树,所以检索速率高效。不同的是,map的数据形式是键值对,即Key-value。而且需要注意的是在map中,key值唯一,并默认会根据key的字典序进行升序排序。数据插入map添加数据可以有四种方式,分别是通过pair组合成键值对的形式,和数组的方式添加。#include #include #incl...
阅读(123) 评论(0)

STL list

STL中的list是序列容器,内部实现方式是双向链表,而链表的优势在于插入和删除元素效率高,但是随机访问元素相比vector数组的形式就低,所以读者在具体实现项目的时候,可以考虑因素选取。函数说明 list explain push_back 增加一元素到链表尾 push_front 增加一元素到链表头 sort 对链表排序,默认升序 merge 合并两个有序链...
阅读(178) 评论(0)

STL set

stl中的set是关联性容器结构,内部实现是采用红黑树的平衡二叉树,在set容器中每个元素的值唯一,即如果插入两个相同的数,后面的会被忽略,不会插入set容器。并且,set的元素会自动排序,默认排序方式从大到小的方式,当然可以自定义排序方式。注意,set容器中元素的值不能直接被修改。插入元素不同于的vector的push_back()方式,set中加入元素的函数是insert()。#include...
阅读(254) 评论(0)

STL vector

STL 最常见使用最多的是vector,它能容纳任何数据类型,因为它是模板实现,所以自定义的结构体,也是可行。内部实现是以数组形式,所以开辟的内存空间是连续的,并且vector中operator了[]符号,可以像数组一样访问数据。但是需要注意的是,这不是安全的,加入超过了vector的实际长度空间,那么取的值就是异常值,解决方法是使用at函数取值,越界会报异常out_of_range。 vecto...
阅读(146) 评论(0)

C++ mutable

mutable 英语翻译是易变的,性情不定的。常看到用来修饰成员函数变量,表示这个函数可以被修改,即使这个变量在const函数中,mutable修饰的变量也能被修改,从而忽略const的限制。#include class CMutable { public: CMutable(void):m_Count(0){} ~CMutable(void){} int...
阅读(157) 评论(0)

C++ volatile

volatile英文的翻译是不稳定的,在C++中关键字声明表明其后变量值可能被改变,但是声明后,每次取值都是都是到内存中取值,从未防止编译器优化。A volatile specifier is a hint to a compiler that an object may change its value in ways not specified by the language so that a...
阅读(112) 评论(0)

C++ inline

在阅读别人的开源源码时,经常发现一些函数前加了关键字inline,上网查了下,这是内联函数的声明方式。 其主要的特点省去函数调用的开销,提高代码执行效率。 为什么能省去函数调用的开销?内联函数是以复制代码为代价来提高效率的,也就是在程序编译阶段,注意是在程序编译阶段,把内联函数体复制到调用点的函数体中,所以就省去了函数调用的开销。既然有复制函数体,所以有几点需要注意。inline int max...
阅读(140) 评论(0)
    个人资料
    • 访问:5269次
    • 积分:305
    • 等级:
    • 排名:千里之外
    • 原创:23篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类