C++课上ppt6复习 Standard Template Library

来源:互联网 发布:spice仿真软件下载 编辑:程序博客网 时间:2024/05/20 18:43

标准模板库




Sequential Container(顺序容器)

int main()              // accessElementByIterator.cpp{     vector<int> ivec(10, 2);                             // 创建含10个值为2的元素的vector容器     vector<int>::iterator iter;                // 声明迭代器对象     vector<int>::reverse_iterator riter; // 声明迭代器对象                                                         :      // 输出容器中的所有元素       for( iter = ivec.begin(); iter != ivec.end(); iter ++ )       {    cout << *iter << " ";   }            // 反向输出容器中的所有元素      for( riter = ivec.rbegin(); riter != ivec.rend(); riter++)      {   cout << *riter << " ";   }                          :}



(1) 分配指定数目的元素,并对这些元素进行值初始化:

            vector<int> ivec1(10);              // ivec1包含10个0值元素

(2) 分配指定数目的元素,并将这些元素初始化为指定值:

vector<int> ivec2(10, 1); // ivec2包含10个值为1的元素

(3) 将vector对象初始化为一段元素的副本:

      int ia[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

      vector<int> ivec3(ia, ia+10); // ivec3包含10个元素,值分别为0~9

(4) 将一个vector对象初始化为另一个vector对象的副本:

      vector<int> ivec4(ivec3); // ivec4包含值为0~9的元素(与ivec3相同)






Associative Container(关联容器)



Pair容器(不是关联容器)

头文件<utility>


Map

map<K, T> m;

K是下标类型,T是数组元素类型

map类中的value_typepair类型,它的first成员是const类型的,

也就是说,map容器中元素的键不能修改。若需要修改容器中某元

素的键,只能用间接的方式:首先删除该元素,再插入一个新元素,

新元素的键设置为所需要的键。  

容器的元素下标可以像内置数组那样是整型,也可以是其他类型(例如,string类型),而且后者更常见,因为这里的下标是作为键(关键字)使用的。 

使用下标访问元素时,如果该元素存在,则返回元素中的值(也就是键所对应的值)。如果指定的元素不存在,将会导致在容器中增加一个新元素,

该元素中“键”的取值就是给定的下标值,该元素中的“值”采用值初始化。

S[“sysu”] 默认缺省值为0

由于map里每一个元素是pair,下标是pair.first,值是pair.second

所以cout << (*iter).first << "\t" << (*iter).second << endl;

map容器不提供push_backpush_front操作。

如果欲插入的元素所对应的键已在容器中存在,则insert将不做任何操作。

Map.insert(make_pair(“sysu”, 59));



Multimap




Set

不支持下标操作。

内置二叉排序树(时刻有序)

Set不会出现重复元素

int main(){    double darr[] = {4.4, 5.6, 2.1, 7.8, 8.8, 9.8, 1.1};    set<double> dset;    dset.insert(1.2);   // 向set对象dset中插入元素    dset.insert(3.4);    dset.insert(3.4);  dset.insert(darr, darr + 7);  return 0;  }  dset {1.1, 1.2, 2.1, 3.4, 4.4, 5.6, 7.8, 8.8, 9.8 }


Multiset

内置红黑树

时刻有序


Container Adapter(容器适配器)


标准库中定义的容器适配器都是基于顺序容器建立的。

程序员在创建适配器对象时可以选择相应的基础容器类。

      1stack适配器可以建立在vectorlistdeque容器上。

      2queue适配器只能建立在listdeque容器上。

      3priority_queue适配器只能建立在vectorlist容器上。

如果创建适配器对象时不指定基础容器,则stackqueue默认采用deque实现,而priority_queue则默认采用vector实现。



0 0
原创粉丝点击