`

c++中的list用法

阅读更多

#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容器的基本介绍 在C++标准库中,`list`是一种双向链表容器,它允许在其两端进行高效的插入和删除操作。与`vector`不同,`...

    c++ stl list总结

    在这个总结中,我们将深入探讨`list`的特性和使用方法,以及如何在实际编程中充分利用它。 1. **`list`的基本概念** `list`是一个模板类,可以存储任何类型的数据,只要该类型支持赋值操作。它通过双向链接节点...

    C++ STL list 遍历删除出错解决方案

    在C++编程中,STL(Standard Template Library,标准模板库)提供了多种容器,如vector、list等,用于高效地存储和操作数据。本篇文章主要探讨的是在使用STL list时遇到的遍历删除元素过程中常见的错误及其解决方案...

    C++中list的使用方法及常用list操作总结

    C++中list的使用方法及常用list操作总结 一、List定义: List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。使用时需要添加头文件 #include &lt;list&gt; 二、List定义和...

    C++标准模板库中list容器实现

    C++标准模板库(STL)是C++编程中不可或缺的一部分,它提供了高效的数据结构和算法,极大地提高了代码的可读性和复用性。...了解`list`的工作原理和使用方法,能帮助开发者更好地利用STL,编写出高效、简洁的C++代码。

    标准C++的StringList

    在标准C++中,`StringList`的概念是对VCL(Visual Component Library)中的`TStringList`类的一个模仿。VCL是Delphi编程环境中的一部分,它提供了一个方便的数据结构来存储和操作字符串列表。在C++中,我们通常会...

    重写C++的list实现增 删 改的功能

    在C++编程中,STL(Standard Template Library,标准模板库)提供了一组高效的数据结构和算法,其中包括`std::list`。`std::list`是一个双向链表,支持快速的插入和删除操作,但随机访问性能相对较弱。在某些情况下...

    [C++][STL] C++ STL 之 List

    **C++ STL 之 List 知识点详解** C++ Standard Template Library(STL)是C++编程中不可或缺的一部分,它提供了一组高效且可重用的...通过实际编程练习,你可以进一步掌握`list`的用法,并将其应用于各种实际问题中。

    c++基本教程,介绍了c++的基本使用方法

    C++的基本使用方法包括以下几个关键概念: 1. **语法基础**:C++的语法与C语言非常相似,包括变量声明、数据类型(如int、float、char等)、控制结构(如if语句、for循环、while循环)、函数定义和调用。 2. **类...

    VS2010 C++学习(6):ListCtrl用法及ADO方式读写Access程序文档

    在本文中,我们将深入探讨如何在Visual Studio 2010 (VS2010)的C++环境中使用ListCtrl控件以及ADO(ActiveX Data Objects)技术来读写Access数据库程序文档。ListCtrl是Windows API中的一种控件,常用于显示列表形式...

    C++ api中文参考手册

    手册会深入解析各种容器的使用方法、迭代器的操作方式,以及常见算法的应用。 3. **C函数库**:C++兼容C语言,因此C++ API也包含了C标准库,如数学函数、字符串操作、输入/输出流等。这部分内容对于了解C++与C的...

    jni操作list集合,来存储对象

    在这个场景中,我们将探讨如何使用JNI在C/C++层操作Java的List集合,特别是存储Java对象。 首先,我们需要理解在JNI中如何与Java对象进行交互。Java对象在JNI中通常表示为`jobject`,而List集合则是一个特定类型的...

    list链表c++源代码

    在本项目中,我们关注的是一个使用C++实现的链表,它模拟了C++标准模板库(STL)中的`list`容器。这个链表实现了泛型编程,意味着它可以存储任何类型的数据。 首先,我们来理解泛型编程。泛型编程是C++中的一项关键...

    c++6.0使用方法

    此外,C++6.0也支持标准模板库(STL),包括容器(如vector、list、set)、算法(如排序、搜索)和迭代器,这些是高效编程的重要工具。 为了深入学习,你可以参考提供的"VC++Tutorial.ppt"文件,它很可能包含了详细...

    VS2010 C++学习(6):ListCtrl用法及ADO方式读写Access程序

    在本篇中,我们将深入探讨如何使用Visual Studio 2010(VS2010)中的C++来实现ListView控件(ListCtrl)的功能,并通过ADO(ActiveX Data Objects)来读取和写入Access数据库。ListCtrl是Windows API提供的一种控件...

    C++使用指南让你最快的掌握C++的使用方法

    本指南旨在帮助你快速掌握C++的使用方法,无论你是初学者还是有一定经验的开发者,都能从中受益。 C++的基础: 1. **语法结构**:C++基于C语言,并扩展了面向对象的特性。它包括基本数据类型(如int, float, char等...

    C++Builder中实现控件数组的功能

    首先,让我们看看如何在C++Builder中创建和使用控件数组。在VB中,控件数组的所有元素都必须是同一类型的控件,但在C++Builder中,TList类可以存储不同类型的对象,包括控件,因此我们可以在一个TList中组合不同类型...

    C++中文完整版

    C++中的模板也是关键知识点,它提供了泛型编程的能力,使得编写可重用的代码成为可能,无论数据类型如何,都可以使用同一模板进行操作。此外,STL(Standard Template Library,标准模板库)是C++的重要组成部分,...

    一个关于C++与qml交互的demo :从C++传输一个listmode的方法。

    在C++中,我们可以通过`QQmlListProperty`或者直接使用Q_PROPERTY来暴露一个`ListModel`实例。例如,我们可以定义一个C++类,包含一个`QStringList`成员变量,然后将其暴露给QML: ```cpp class ImageProvider : ...

Global site tag (gtag.js) - Google Analytics