• 第二十三模板 18.2列表容器 简单


    //第二十三模板 18.2列表容器
    //列表容器list是个标准模板库容器类
    /*#include <iostream>
    #include <list>
    using namespace std;
    typedef list<int> List;
    int main()
    {
        List ll;
    	List::iterator p; //list类的迭代器方法iterator,并声明了一个迭代器p,可以将其看作是一个归一化的指针
    	//也可锦成List::const_iterator p; 
    	//const_iterator  p表示迭代器p指向的是一个常量,它的值是不可修改的
    	for(int i=1; i<10;++i){
    		ll.push_back(i*5);
    	}
    	for(p=ll.begin(); p!=ll.end(); ++p)
    	{
    	    cout<<*p<<" ";
    	}
    	cout<<endl;
    	return 0;
    }*/
    /*
    list类还有其它成员函数
    assign()    给list赋值
    back()      返回最后一个元素
    begin()     返回指向第一个元素的迭代器
    clear()     删除所有元素
    empty()     如果list是空的则返回true
    end()       返回末尾的迭代器
    erase()     删除一个元素符号
    front()     返回第一个元素
    get_allocator() 返回list的配置器
    insert()    插入一个元素到list中
    max_size()  返回list能容红领巾的最大元素数量
    merge()     合并两个list
    pop_back()  删除最后一个元素
    push_back() 在list的末尾添加一个元素
    push_front() 在list的头部添加一个元素
    rbegin()    返回指向第一个元素的逆向迭代器
    remove()    从list删除元素
    remove_if() 指指定条件删除元素
    rend()      指向list末尾的逆向迭代器
    reverse()   把list的元素倒转
    size()      返回list中的元素个数
    sort()      给list排序
    splice()    将第二个list连接到指定位置
    swap()      交换两个list
    unique()    删除list中重复的元素
    */
    /*
    #include <iostream>
    #include <list>
    #include <ostream>
    using namespace std;
    typedef list<int> List;
    void show(List&one, List::iterator pos)
    {
    	for(pos=one.begin(); pos!=one.end(); ++pos){
    	   cout<<*pos<<" ";
    	}
    }
    int main()
    {
        List one;
    	int num[6]={0,1,2,3,4,5};
    	one.insert(one.begin(), num,num+6);
    	List::iterator p;
    	show(one,p);
    	cout<<endl<<"倒转所有元素"<<endl;
    	one.reverse();
    	show(one,p);
    	one.sort();
    	cout<<endl<<"按升序排列所有元素"<<endl;
    
    	//创建一个输出流对像pp,它将接受一个int的变量,并以空字符作为间隔符
    
    	//ostream_iterator<int,char>pp(cout," "); //这句是创建一个什么东东
    	//copy(one.begin(),one.end(),pp);
    	//cout<<endl;
    
    	List two(2);
    	cout<<"将list two的所有元素添添加到one的后面"<<endl;
    	one.splice(one.end(),two);
    	show(one,p);
    	//copy(one.begin(),one.end(),pp);
    	cout<<endl;
    	cout<<endl<<"删除重复元素"<<endl; 
    	one.unique();//这里删除重复之后咱还有0 1 2 3 4 5 0呢?
    	//unique()为什么不将一前面的0或者5后面的0删除掉呢
    	//这是因为unique()函数只能将相邻的重复元素合并为一个
    
    	show(one,p);
    	cout<<endl;
    	cout<<endl<<"删除为0的元素"<<endl;
    	one.remove(0);
    	show(one,p);
    	cout<<endl;
    
    	cout<<"清空所有元素"<<endl;
    	one.clear();
    	show(one,p);
    	system("pause");
    	return 0;
    }*/
    //注意: insert与splice的区别,insert将list对像的副本插入到目标区域中,而splice则将该对像直接移到目标地址
    
    
    
    
    //第二十三模板 18.3双向队列容器 deque
    // 双向队列(deque)和向量(vector)很相似,但是它允许在容器头部和尾部快速插入和删除,它也支持随机访问,但是效率比向量略低
    /*
    Constructors() 创建一个新双向队列
    Operators()    比较和赋值双向队列
    assign()       设置双向队列的值
    at()           返回指定的元素
    back()         返回最后一个元素
    begin()        返回第一个元素的迭代器
    clear()        清空所有元素
    empty()        判断双向队列是否为空(返回true时为空)
    end()          返因最末元素的迭代器(实指向最末元素的下一个位置)
    erase()        删除指定元素
    front()        返回第一个元素
    get_allocator()   返回双向队列的内存分配器
    insert()        插入元素的双向队列中
    max_size()      返回双向列能容纳的最大元素个数
    pop_back()      移除最后一元素
    pop_front()     删除头部的元素
    push_back()     在最后添加一个元素
    rbegin()        返回尾部的逆迭代器
    rend()          返回起始的逆迭代器
    
    resize()        改变双向队列的大小
    size()          返回又向队列中元素的个数
    swap()          和另一个双向队交换元素
    */
    
    // 2.4 队列
    //队列模板类queue是一个适配器类,前面所学的ostream_iterator模板就是个适配器类,它让输出流能够将迭代器作为接口
    //同样,队列模板类queue默认给双向队列容器deque提供队列接口
    
    //什么是队列:
    //队列就是像整齐排列在电影院门口等候买票的队,新来人人要排列在队伍的最后面,
    //这称为FIFO, 即先入先出 堆栈是LIFO即后进行出
    //所有方法如下
    /*back()  返回最后一个元素
    empty() 如果队列空则返回值
    front()  返回第一个元素
    pop()    删除第一个元素
    push()   在末尾加入一个元素
    size()   反队列元素的个数*/
    //注意,要删除队首的元素,则需要首先调用front()函数获取第一全元素的信息,然后才能调用pop函数删除该元素,要在队尾加入一个元素,则首先调back()函数返回最后一个元素,然后调用push()函数在队尾加入一个元素
    
    
    
    //2.5 优先队列
    /*
    Priority Queues模板类是另一个适配器类,它支持的操作与队列模板类queue相同
    empty() 如果优先队列为空,则返回值
    pop()   删除第一个元素
    push()  加入一个元素
    size()  返回优先队列中拥有的元素的个数
    top()   返回优先队列中的最高优先级的元素
    
    */
    
    //2.6  堆栈类 stack
    /*
    operator(== <= >= <> !=)  比较和分配堆栈
    empty()  堆栈为空则返回真
    pop()    移除栈顶元素(弹)
    push()   在栈顶增加元素(压)
    size()   返回栈中元素数目
    top()    返回栈顶元素
    */
    /*#include <iostream>
    #include <stack>
    using namespace std;
    int main()
    {
    	stack<int> s;
    	for(int i=0; i<10; i++)
    	{
    		s.push(i);
    		cout<<"当前压入元素为:";
    		cout<<"当前椎栈中元素数目前为:"<<s.size()<<endl;
    	}
    	cout<<endl<<"依次弹出栈栈机元素"<<endl;
    	while(!s.empty()){
    		cout<<s.top()<<" ";
    		s.pop();
    	}
    	if(s.empty()){
    	    cout<<endl<<endl<<"堆栈已空"<<endl;
    	}
    	system("pause");
        return 0;
    }*/
    

      

  • 相关阅读:
    C++ 项目和资源导引
    C++ 类再探
    C++ 语句函数再探
    leetcode-174. Dungeon Game 地下城游戏
    34. Find First and Last Position of Element in Sorted Array + 二分
    leetcode-27. Remove Element删除元素
    git 使用入门
    MySQL数据库的启动与停止
    C++类型转换
    C++ 获取对象类型
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/2711696.html
Copyright © 2020-2023  润新知