C++日常笔记(1)

1.关于结构体

在C++中,允许声明结构变量时省略struct关键字。

C++11支持将列表初始化用于结构,且等号(=)是可选的。
如果大括号内未包含任何东西,则结构中的各个成员都被设置为零
(char [] 中每个字节都被设置为零)

在结构中,可以像在类中一样设置静态成员,并在结构外对其进行初始化;此外,结构还可以设置构造函数、析构函数。

结构允许指定占用特定位置的结构成员,字段的类型应为整型或枚举,接着为’:’,然后为数字,指定所使用的位数。

2.关于std::pair

template <class T1, class T2> struct pair;

pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同。
一般声明如下:

std::pair,typename2> xxx(value1,value2);

其中typename1,typename2可以为任何数据类型,用户自定义的类型也可以。
如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化。

可以通过点操作符调用std::pair变量的内部数据:

xxx.first;      //返回value1
xxx.second;     //返回value2

此外,std::pair提供了一些接口,如:

template 
std::pair std::make_pair (T1 x, T2 y)
{ return ( pair(x,y) ); }

void std::pair::swap (pair& pr) noexcept ( noexcept(swap(first,pr.first)) &&noexcept(swap(second,pr.second)) ) 
{
  swap(first,pr.first);
  swap(second,pr.second);
}

3.STL中的容器部分

<vector>
向量(vector)  连续存储的元素

<list>
列表(list)  由节点组成的双向链表,每个结点包含着一个元素

<deque>
双队列(deque)  连续存储的指向不同元素的指针所组成的数组

<set>
集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 
多重集合(multiset) 允许存在两个次序相等的元素的集合 

<stack>
栈(stack) 后进先出的值的排列 

<queue>
队列(queue) 先进先出的值的排列 
优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列 

<map>
映射(map) 由{键,值}对组成的集合,以某种作用于键对上的谓词排列 
多重映射(multimap) 允许键对有相等的次序的映射 

关于capacity与size的区别:
a、capacity是容器需要增长之前,能够盛的元素总数;只有连续存储的容器才有capacity的概念(例如vector,deque,string,list不需要capacity)
b、size是容器当前存储的元素的数目。
c、vector默认的容量初始值,以及增长规则是依赖于编译器的。

常量容器:const vector<int> vec(10);//这个容器里capacity和size和值都是不能改变的,const修饰的是vector;
迭代器:const vector<int>::const_iterrator ite; //常量迭代器;

资料来源:
http://www.cplusplus.com/reference/utility/pair/
http://blog.csdn.net/gogokongyin/article/details/51178378

你可能感兴趣的:(C/C++)