stl-stack/queue/list

来源:互联网 发布:tensorflow 英文教程 编辑:程序博客网 时间:2024/05/18 09:24

stack
适配器,它可以将任意类型的序列容器转换为一个堆栈,一般使用deque作为支持的序列容器。
元素只能后进先出(LIFO)。
不能遍历整个stack

1.声明一个stack

   stack<int> s1;

   stack<string> s2;

2.stack中的操作

    stack<int> s;

    s.push(x)      无返回值,将元素x压栈

    s.pop();       退栈,无返回值

    s.top();        取栈顶元素,返回栈顶元素

    s.empty();     判断栈是否为空,如果是空,返回1,否则返回0

    s.size();      返回栈中元素的个数

在栈中没有提供清空操作的函数,但是可以间接地实现清空栈,

   while(!s.empty())

   {    

          s.pop();

   }





deque

deque容器类与vector类似,支持随机访问和快速插入删除,它在容器中某一位置上的操作所花费的是线性时间。与vector不同的是,deque还支持从开始端插入数据:push_front()。其余类似vector操作方法的使用。




list

List是stl实现的双向链表,与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。需要添加头文件list

 //1.定义和初始化    list<int> lst1;          //创建空list    list<int> lst2(3);       //创建含有三个元素的list    list<int> lst3(3,2); //创建含有三个元素的list    list<int> lst4(lst2);    //使用lst2初始化lst4    list<int> lst5(lst2.begin(),lst2.end());  //同lst4     //2.常用操作方法    lst1.assign(lst2.begin(),lst2.end());  //分配值    lst1.push_back(10);                    //添加值    lst1.pop_back();                   //删除末尾值    lst1.begin();                      //返回首值的迭代器    lst1.end();                            //返回尾值的迭代器    lst1.clear();                      //清空值    bool isEmpty1 = lst1.empty();          //判断为空    lst1.erase(lst1.begin(),lst1.end());                        //删除元素    lst1.front();                      //返回第一个元素的引用    lst1.back();                       //返回最后一个元素的引用    lst1.insert(lst1.begin(),3,2);         //从指定位置插入个    lst1.rbegin();                         //返回第一个元素的前向指针    lst1.remove(2);                        //相同的元素全部删除    lst1.reverse();                        //反转    lst1.size();                       //含有元素个数    lst1.sort();                       //排序    lst1.unique();                         //删除相邻重复元素     //3.遍历    //迭代器法    for(list<int>::const_iterator iter = lst1.begin();iter != lst1.end();iter++)    {       cout<<*iter;    }    cout<<endl;






原创粉丝点击