#include<iostream>
#include<list>
#include<numeric>
#include<algorithm>
usingnamespacestd;
//创建一个list容器的实例LISTINT
typedeflist<int>LISTINT;
//创建一个list容器的实例LISTCHAR
typedeflist<int>LISTCHAR;
voidmain(void)
{
//--------------------------
//用list容器处理整型数据
//--------------------------
//用LISTINT创建一个名为listOne的list对象
LISTINTlistOne;
//声明i为迭代器
LISTINT::iteratori;
//从前面向listOne容器中添加数据
listOne.push_front(2);
listOne.push_front(1);
//从后面向listOne容器中添加数据
listOne.push_back(3);
listOne.push_back(4);
//从前向后显示listOne中的数据
cout<<"listOne.begin()---listOne.end():"<<endl;
for(i=listOne.begin();i!=listOne.end();++i)
cout<<*i<<"";
cout<<endl;
//从后向后显示listOne中的数据
LISTINT::reverse_iteratorir;
cout<<"listOne.rbegin()---listOne.rend():"<<endl;
for(ir=listOne.rbegin();ir!=listOne.rend();ir++){
cout<<*ir<<"";
}
cout<<endl;
//使用STL的accumulate(累加)算法
intresult=accumulate(listOne.begin(),listOne.end(),0);
cout<<"Sum="<<result<<endl;
cout<<"------------------"<<endl;
//--------------------------
//用list容器处理字符型数据
//--------------------------
//用LISTCHAR创建一个名为listOne的list对象
LISTCHARlistTwo;
//声明i为迭代器
LISTCHAR::iteratorj;
//从前面向listTwo容器中添加数据
listTwo.push_front('A');
listTwo.push_front('B');
//从后面向listTwo容器中添加数据
listTwo.push_back('x');
listTwo.push_back('y');
//从前向后显示listTwo中的数据
cout<<"listTwo.begin()---listTwo.end():"<<endl;
for(j=listTwo.begin();j!=listTwo.end();++j)
cout<<char(*j)<<"";
cout<<endl;
//使用STL的max_element算法求listTwo中的最大元素并显示
j=max_element(listTwo.begin(),listTwo.end());
cout<<"ThemaximumelementinlistTwois:"<<char(*j)<<endl;
}
#include<iostream>
#include<list>
usingnamespacestd;
typedeflist<int>INTLIST;
//从前向后显示list队列的全部元素
voidput_list(INTLISTlist,char*name)
{
INTLIST::iteratorplist;
cout<<"Thecontentsof"<<name<<":";
for(plist=list.begin();plist!=list.end();plist++)
cout<<*plist<<"";
cout<<endl;
}
//测试list容器的功能
voidmain(void)
{
//list1对象初始为空
INTLISTlist1;
//list2对象最初有10个值为6的元素
INTLISTlist2(10,6);
//list3对象最初有3个值为6的元素
INTLISTlist3(list2.begin(),--list2.end());
//声明一个名为i的双向迭代器
INTLIST::iteratori;
//从前向后显示各list对象的元素
put_list(list1,"list1");
put_list(list2,"list2");
put_list(list3,"list3");
//从list1序列后面添加两个元素
list1.push_back(2);
list1.push_back(4);
cout<<"list1.push_back(2)andlist1.push_back(4):"<<endl;
put_list(list1,"list1");
//从list1序列前面添加两个元素
list1.push_front(5);
list1.push_front(7);
cout<<"list1.push_front(5)andlist1.push_front(7):"<<endl;
put_list(list1,"list1");
//在list1序列中间插入数据
list1.insert(++list1.begin(),3,9);
cout<<"list1.insert(list1.begin()+1,3,9):"<<endl;
put_list(list1,"list1");
//测试引用类函数
cout<<"list1.front()="<<list1.front()<<endl;
cout<<"list1.back()="<<list1.back()<<endl;
//从list1序列的前后各移去一个元素
list1.pop_front();
list1.pop_back();
cout<<"list1.pop_front()andlist1.pop_back():"<<endl;
put_list(list1,"list1");
//清除list1中的第2个元素
list1.erase(++list1.begin());
cout<<"list1.erase(++list1.begin()):"<<endl;
put_list(list1,"list1");
//对list2赋值并显示
list2.assign(8,1);
cout<<"list2.assign(8,1):"<<endl;
put_list(list2,"list2");
//显示序列的状态信息
cout<<"list1.max_size():"<<list1.max_size()<<endl;
cout<<"list1.size():"<<list1.size()<<endl;
cout<<"list1.empty():"<<list1.empty()<<endl;
//list序列容器的运算
put_list(list1,"list1");
put_list(list3,"list3");
cout<<"list1>list3:"<<(list1>list3)<<endl;
cout<<"list1<list3:"<<(list1<list3)<<endl;
//对list1容器排序
list1.sort();
put_list(list1,"list1");
//结合处理
list1.splice(++list1.begin(),list3);
put_list(list1,"list1");
put_list(list3,"list3");
}
分享到:
相关推荐
根据提供的文件信息,我们可以总结出以下C++中`list`容器的使用方法及示例: ### C++中list容器的基本介绍 在C++标准库中,`list`是一种双向链表容器,它允许在其两端进行高效的插入和删除操作。与`vector`不同,`...
在C++编程中,STL(Standard Template Library,标准模板库)提供了多种容器,如vector、list等,用于高效地存储和操作数据。本篇文章主要探讨的是在使用STL list时遇到的遍历删除元素过程中常见的错误及其解决方案...
在这个总结中,我们将深入探讨`list`的特性和使用方法,以及如何在实际编程中充分利用它。 1. **`list`的基本概念** `list`是一个模板类,可以存储任何类型的数据,只要该类型支持赋值操作。它通过双向链接节点...
C++中list的使用方法及常用list操作总结 一、List定义: List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。使用时需要添加头文件 #include <list> 二、List定义和...
本节将深入探讨C++和C#中数据传递的常见方法,特别是涉及数组和List类型的传递。 首先,让我们从C++开始。在C++中,数据传递主要通过值传递和引用传递。数组在C++中被视为对象,因此当作为参数传递时,实际上是传递...
C++标准模板库(STL)是C++编程中不可或缺的一部分,它提供了高效的数据结构和算法,极大地提高了代码的可读性和复用性。...了解`list`的工作原理和使用方法,能帮助开发者更好地利用STL,编写出高效、简洁的C++代码。
在标准C++中,`StringList`的概念是对VCL(Visual Component Library)中的`TStringList`类的一个模仿。VCL是Delphi编程环境中的一部分,它提供了一个方便的数据结构来存储和操作字符串列表。在C++中,我们通常会...
在C++编程中,STL(Standard Template Library,标准模板库)提供了一组高效的数据结构和算法,其中包括`std::list`。`std::list`是一个双向链表,支持快速的插入和删除操作,但随机访问性能相对较弱。在某些情况下...
**C++ STL 之 List 知识点详解** C++ Standard Template Library(STL)是C++编程中不可或缺的一部分,它提供了一组高效且可重用的...通过实际编程练习,你可以进一步掌握`list`的用法,并将其应用于各种实际问题中。
C++的基本使用方法包括以下几个关键概念: 1. **语法基础**:C++的语法与C语言非常相似,包括变量声明、数据类型(如int、float、char等)、控制结构(如if语句、for循环、while循环)、函数定义和调用。 2. **类...
在本文中,我们将深入探讨如何在Visual Studio 2010 (VS2010)的C++环境中使用ListCtrl控件以及ADO(ActiveX Data Objects)技术来读写Access数据库程序文档。ListCtrl是Windows API中的一种控件,常用于显示列表形式...
手册会深入解析各种容器的使用方法、迭代器的操作方式,以及常见算法的应用。 3. **C函数库**:C++兼容C语言,因此C++ API也包含了C标准库,如数学函数、字符串操作、输入/输出流等。这部分内容对于了解C++与C的...
在这个场景中,我们将探讨如何使用JNI在C/C++层操作Java的List集合,特别是存储Java对象。 首先,我们需要理解在JNI中如何与Java对象进行交互。Java对象在JNI中通常表示为`jobject`,而List集合则是一个特定类型的...
在本项目中,我们关注的是一个使用C++实现的链表,它模拟了C++标准模板库(STL)中的`list`容器。这个链表实现了泛型编程,意味着它可以存储任何类型的数据。 首先,我们来理解泛型编程。泛型编程是C++中的一项关键...
此外,C++6.0也支持标准模板库(STL),包括容器(如vector、list、set)、算法(如排序、搜索)和迭代器,这些是高效编程的重要工具。 为了深入学习,你可以参考提供的"VC++Tutorial.ppt"文件,它很可能包含了详细...
在本篇中,我们将深入探讨如何使用Visual Studio 2010(VS2010)中的C++来实现ListView控件(ListCtrl)的功能,并通过ADO(ActiveX Data Objects)来读取和写入Access数据库。ListCtrl是Windows API提供的一种控件...
本指南旨在帮助你快速掌握C++的使用方法,无论你是初学者还是有一定经验的开发者,都能从中受益。 C++的基础: 1. **语法结构**:C++基于C语言,并扩展了面向对象的特性。它包括基本数据类型(如int, float, char等...
首先,让我们看看如何在C++Builder中创建和使用控件数组。在VB中,控件数组的所有元素都必须是同一类型的控件,但在C++Builder中,TList类可以存储不同类型的对象,包括控件,因此我们可以在一个TList中组合不同类型...
C++中的模板也是关键知识点,它提供了泛型编程的能力,使得编写可重用的代码成为可能,无论数据类型如何,都可以使用同一模板进行操作。此外,STL(Standard Template Library,标准模板库)是C++的重要组成部分,...