STL容器学习第一天

来源:互联网 发布:淘宝网上眼镜店哪家好 编辑:程序博客网 时间:2024/05/22 12:33

容器:管理序列的类,通过容器类提供的成员函数,实现各中队序列中元素的操作。


STL提供了各种容器类模板,通常这些模板类包括:向量(vector),列表(list),双队列(deque),集合(set),多重集合(multiset),映射(map),多重映射(multimap)。


vector可以认为是动态数组;list是由节点组成的双线列表,每个节点包括一个元素;双队列(deque)是包含N个连续的指向不同元素的指针组成的数组;集合(set)是由节点组成的,每个节点包含一个元素,节点间以某种谓词排序;多重集合(multiset)是允许存在两个次序相等的元素集合;映射(map)是由{键,值}对组成的集合,同样以某种谓词排序;多重映射(multimap)是允许键对包含相等次序的映射。



容器成员:容器成员必须满足3个条件1.元素必须时刻复制的;2.元素必须可赋值;3.元素必须可以被释放。


容器函数:容器均能提供value,而非reference;所有的元素自动形成顺序;函数使用者必须确保传递的参数符合要求。


STL容器种类:序列式容器;关联性容器;容器配接器。


序列式容器:vector动态数组,deque双向队列,list双向串形;


关联性容器:set,multiset,map,multimap,hash(哈希表);


容器配接器:以某种STL容器作为底,修改器接口,具备各自的特点。包括stack,queue,priority_queue.


STL容器的数据结构:string字符串,bitset,valarray。


例子1:


#include<iostream>
#include<bitset>
#include<string>
using namespace std;


int main()
{
    bitset<10> bs1(7);//bitset中长度为10个bit,初始化为10进制7
    bitset<10> bs2(string("1000101011"));//初始化为10个字符长度的字符串
    cout<<bs1<<endl;
    cout<<bs2<<endl;
    system("pause");
    return 0; 
}


例子2


#include<iostream>
#include<valarray>
using namespace std;


template <typename T> void printValarray(const valarray<T>& va)
{
     for(int i=0;i<va.size();++i)
          cout<<va[i]<<' ';
     cout<<endl;
}


int main()
{
     valarray<int> val(4);  //包含四个元素,但没有初始化
     printValarray(val);    //输出
     valarray<int> va2(3,4); //包含四个元素,其数值均为3
     printValarray(va2);
     int ia[]={1,2,3,4,5,6}; 
     valarray<int> va3(ia,sizeof(ia)/sizeof(ia[0]));//动态数组,大小和ia的元素个数相同
     printValarray(va3);
     valarray<int> va4(ia+1,4); //4个元素,数值分别为数组ia的前四个元素加1
     printValarray(va4);
     val=(va2+va4)*va4;        //给val赋值
     printValarray(val);
     cin.get();                //任意键退出   
}

原创粉丝点击