zoukankan      html  css  js  c++  java
  • List container

    //List容器
    //List本质是一个双向链表
    
    //构造函数
    list<int>c0;            //空链表
    list<int>c1(3);       //建一个含三个默认值是0的元素链表
    list<int>c2(5,2);    //含5个元素,值都是2
    list<int>c4(c2);     //复制链表
    list<int>c5(c1.begin(), c1.end());  //c5包含c1的一个区域元素
    
    //成员函数
    c.begin()    //返回链表第一个元素的迭代器
    c.end()       //返回指向链表最后一个元素之后的迭代器
    
    c.rbegin()   //返回逆向链表的第一个元素,即c链表的最后一个数据
    c.rend()      //返回逆向链表的最后一个元素下一个位置,即c链表的第一个数据再往前的位置
    //example
    list<int>l1 = {1,2,3,4};
    	for (list<int>::reverse_iterator it = l1.rbegin(); it != l1.rend(); it++)
    		cout << *it << endl;
    	
    operator=    //重载赋值元素符
    
    c.assign(n, num)   //将n个num拷贝赋值给链表c
    c.assign(beg, end) //将[beg, end]区间的元素拷贝赋值给链表c	
    //Example    
    	list<int>l1 ;
    	l1.assign(2, 10);
    	for (list<int>::iterator it = l1.begin(); it != l1.end(); it++)
    		cout << *it << endl;
    	l1.clear();
    	int a[5] = { 1, 2, 3, 4, 5 };
    	l1.assign(a, a + 5);
    	for (list<int>::iterator it = l1.begin(); it != l1.end(); it++)
    		cout << *it << endl;
    	
    c,front()     //返回第一个元素
    c.back()     //返回最后一个元素
    
    c.empty()   //判空
    
    c.size()       //返回元素个数
    
    c.max_size()  //返回可能容纳最大元素数量
    
    c.clear()      //清除c中所有元素
    
    c.insert(pos,num)         //在pos位置插入元素num。
    c.insert(pos,n,num)      //在pos位置插入n个元素num。
    c.insert(pos,beg,end)    //在pos位置插入区间为[beg,end)的元素。
    
    c.erase(pos)      //删除pos位置元素
    
    c.push_back(num)      //在末尾增加一个元素。
    c.pop_back()              //删除末尾的元素。
    c.push_front(num)     //在开始位置增加一个元素。
    c.pop_front()              //删除第一个元素。
    
    c.resize(n)                  //重新定义链表长度,超出原始长度部分用0代替,小于原始部分删除
    c.resize(n, num)         //重新定义链表长度,超出原始长度部分用num代替,小于原始部分删除
    
    c1.swap(c2);               //将c1和c2交换。
    swap(c1,c2);               //同上。
    
    c1.merge(c2)              //合并2个有序的链表并使之有序,重新放到c1里,释放c2。
    c1.merge(c2,comp)    //合并2个有序的链表并使之按照自定义规则排序之后重新放到c1中,释放c2,comp为比较函数,默认合成为升序
    //comp是一个函数名称
    //要依据实际情况设计compare
    bool compare(int n1, int n2)
    {
    	return n1 > n2;
    }
    
    int main()
    {
    	list<int>l1{ 4,2,1 }, l2{ 6,5,3 };
    	list<int>::iterator it;
    	l1.merge(l2,compare);
    	for (it = l1.begin(); it != l1.end(); it++)
    		cout << *it << endl;
    
    	return 0;
    }
    
    c1.splice(c1.beg, c2)   //将c2连接在c1的beg位置,释放c2
    //Example
        list<int>l1{ 1, 2, 3 }, l2{ 4, 5, 6 };
    	l1.splice(l1.begin(), l2);
    	list<int>::iterator it;
    	for (it = l1.begin(); it != l1.end(); it++)
    		cout << *it << endl;  
    	
    c1.splice(c1.beg, c2, c2.beg)   //将c2的beg位置的元素连接到c1的beg位置,并且在c2中释放掉beg位置的元素
    
    c1.remove(num)                 //删除链表中匹配num的元素。
    
    c1.remove_if(comp)                //删除条件满足的元素,参数为自定义的回调函数。
    //Example
    bool compare(int n)
    {
    	return n < 2;
    }
    int main()
    {
    	list<int>l1{ 1, 2, 3 }, l2{ 4, 5, 6 };
    	list<int>::iterator it;
    	l1.remove_if(compare);
    	for (it = l1.begin(); it != l1.end(); it++)
    		cout << *it << endl;
    
    	system("pause");
    	return 0;
    }
    
    c1.reverse()                            //反转链表
    
    c1.unique()                            //删除相同的元素,只剩下一个
    
    c.sort()                                   //将链表排序,默认升序
    c.sort(comp)                          //自定义回调函数实现自定义排序
    

      

  • 相关阅读:
    处理ios键盘弹出按钮点击click失效
    vue-eahars生产编译报错
    vue页面嵌套其他页面判断是否生产https
    阿里云linux安装nginx,亲测有效
    translate函数
    html表单from练习
    html 表格标签
    selenium模块简单使用
    python字符串普通操作
    浏览器的cookie的值改成字典格式
  • 原文地址:https://www.cnblogs.com/KennyRom/p/5950686.html
Copyright © 2011-2022 走看看