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)                          //自定义回调函数实现自定义排序

  

时间: 2024-11-10 01:10:53

List container的相关文章

leetcode -eleven:Container With Most Water

Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a containe

Container With Most Water ——解题笔记

[题目] Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a con

C# 对轻量级(IoC Container)依赖注入Unity的使用

概述 Unity是一个轻量级的可扩展的依赖注入容器,支持构造函数,属性和方法调用注入.Unity可以处理那些从事基于组件的软件工程的开发人员所面对的问题.构建一个成功应用程序的关键是实现非常松散的耦合设计.松散耦合的应用程序更灵活,更易于维护.这样的程序也更容易在开发期间进行测试.你可以模拟对象,具有较强的具体依赖关系的垫片(轻量级模拟实现),如数据库连接,网络连接,ERP连接,和丰富的用户界面组件.例如,处理客户信息的对象可能依赖于其他对象访问的数据存储,验证信息,并检查该用户是否被授权执行更

LeetCode11:Container With Most Water

Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a containe

Windows Container 和 Docker

Windows Container 和 Docker 微软在2016年的Ignite技术大会上正式发布了Windows Server 2016,其中的容器服务已经可以作为生产环境使用.这意味着Windows 内置的容器服务正式进入了大家的视野,虽然之前我们已经有了Docker for Windows,但是在这篇文章中我们要聊的并不是运行在Windows上面的Linux虚拟机里面的容器,而是原生的Windows容器. 1. Windows Container提供2种运行时:Window Serve

【LeetCode】11. Container With Most Water

题目: Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a cont

Laravel Container分析

在分析Laravel流程具体细节之前我们先来了解一下它的Container容器,容器的作用简单的说就是用来存储对象(类名称或者实例),包括提供一些生成对象实例的方法. 我们查看Illuminate\Container\Container,发现里面有很多数组类型的属性,这些属性就是用来存储对象的. 此文未完,由于我也是刚刚开始接触Laravel,所以待后续分析遇到了于Container有关的内容时再来补成

Java tomcat启动失败(Servlet3.0 Web Project):A child container failed during start

Tomcat启动失败,失败全部信息: 五月 11, 2016 10:21:04 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:MyEL' did not find a matching prop

浅析Delphi Container库(有开源的DCLX)

与Java和C++相比,Delphi对容器的支持实在少得可怜.Java有强大的集合框架,C++更有STL,Delphi有什么呢,不就是TList几个小巧的列表类,而TCollection系列的类更多只是为了可视控件而存在的,真正意义上的容器类几乎没有.一日在Google上随意的敲上Delphi Container字样,没想到竟搜到一个SourceForge的开源项目,它在主页上是这样写的:DCLX(Delphi container library X)是一个免费的库,它提供了数组列表(Array

[hadoop] - Container [xxxx] is running beyond physical/virtual memory limits.

当运行mapreduce的时候,有时候会出现异常信息,提示物理内存或者虚拟内存超出限制,默认情况下:虚拟内存是物理内存的2.1倍.异常信息类似如下: Container [pid=13026,containerID=container_1449820132317_0013_01_000012] is running beyond physical memory limits. Current usage: 1.0 GB of 1 GB physical memory used; 1.7 GB o