#include <iostream>
#include <list>
#include <algorithm> #include <stdlib.h>
#include <string.h> typedef struct info_s
{
int nNumber;
bool operator==(struct info_s b) const
{
return this->nNumber == b.nNumber;
} bool operator!=(struct info_s b) const
{
return this->nNumber != b.nNumber;
} bool operator>=(struct info_s b) const
{
return this->nNumber >= b.nNumber;
} bool operator<=(struct info_s b) const
{
return this->nNumber <= b.nNumber;
} bool operator>(struct info_s b) const
{
return this->nNumber > b.nNumber;
} bool operator<(struct info_s b) const
{
return this->nNumber < b.nNumber;
} }info_t; typedef std::list< info_t > list_t; void append(list_t &List, info_t &info)
{
std::cout<<"***append****"<<std::endl;
List.push_back(info);
} void for_each(list_t &List)
{
std::cout<<"***for_each****"<<std::endl;
list_t::iterator iter;
for(iter = List.begin(); iter != List.end() ;iter++)
{
std::cout<< iter->nNumber <<std::endl;
}
} void del_end_info(list_t &List)
{
std::cout<<"***del_end_info****"<<std::endl;
if(! List.empty())
{
List.pop_back();
}
} void for_each_delete(list_t &List)
{
list_t::iterator iter;
for(iter = List.begin(); iter != List.end() ;)
{
std::cout<< "delete before iter->number:"<<iter->nNumber <<std::endl;
iter = List.erase(iter);
std::cout<< "delete after iter->number:"<< iter->nNumber <<std::endl;
} } int insert_one(list_t &List , info_t &info, int iPlace)
{
int i = ; std::cout<<"insert_one"<<std::endl;
if(iPlace < )
{
std::cout<<"insert_one param error"<<std::endl;
return -;
} list_t::iterator iter = List.begin(); while(iter != List.end())
{
//std::cout<<" dump "<< (*iVector)<<std::endl;
if(i == iPlace)
{
iter = List.insert(iter , info); //此时insert的返回值是迭代器,插入成功后iVector指向插入的位置
std::cout<<" insert_one after List point "<<iter->nNumber <<std::endl;
return ;
} i++;
++iter;
} iter = List.insert(List.end() , info); return ;
} void find_one(list_t &List,info_t info )
{ std::cout<<"find_one"<<std::endl; list_t::iterator iter ; iter = std::find(List.begin(),List.end(), info); if(iter != List.end())
{
std::cout<<"find it"<<std::endl;
}
else
{
std::cout<<"not find it"<<std::endl;
} } void Sort(list_t & List)
{
std::cout<<"Sort it"<<std::endl;
List.sort();
for_each(List);
} int main()
{
//初始化
list_t List;
info_t info;
memset(&info, , sizeof(info_t)); //添加
info.nNumber = ;
append(List, info); info.nNumber = ;
append(List, info); info.nNumber = ;
append(List, info); info.nNumber = ;
append(List, info); info.nNumber = ;
append(List, info); info.nNumber = ;
append(List, info); info.nNumber = ;
append(List, info); //遍历
for_each(List); //插入
info.nNumber = ;
insert_one(List,info,);
for_each(List);
//查找
find_one(List,info); //排序
Sort(List); //删除末尾
del_end_info(List);
for_each(List); std::cout<< " size:"<<List.size()<<std::endl; //删除所有
// List.clear();
for_each_delete(List);
for_each(List);
std::cout<< " size:"<<List.size()<<std::endl; return ;
}

C++链表STL的更多相关文章

  1. 数据结构之合并链表STL

    #include <iostream> #include <list> using namespace std; int main() { int n, m; while (c ...

  2. C++的标准模板库STL中实现的数据结构之链表std::list的分析与使用

    摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解,即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第二篇.主要针对线性表中的链表 ST ...

  3. 剑指offer46:圆圈中最后剩下的数字(链表,递归)

    1 题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随 ...

  4. 优先队列 poj3253 Fence Repair

    Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 51411   Accepted: 16879 De ...

  5. 结队第二次作业——WordCount进阶需求

    结队第二次作业--WordCount进阶需求 博客地址 051601135 岳冠宇 博客地址 051604103 陈思孝 博客地址 Github地址 具体分工 队友实现了爬虫功能,我实现了wordco ...

  6. Uva 11988 Broken Keyboard STL+链表

    两种方法,直接上代码 STL标准模板库 #include <iostream> #include <list> #include <algorithm> #incl ...

  7. 使用STL中的list容器实现单链表的操作

    #include<iostream> #include<list> #include<algorithm> using namespace std; void Pr ...

  8. C语言实现简单的单向链表(创建、插入、删除)及等效STL实现代码

    实现个算法,懒得手写链表,于是用C++的forward_list,没有next()方法感觉很不好使,比如一个对单向链表的最简单功能要求: input: 1 2 5 3 4 output: 1-> ...

  9. Codeforces 1131 F. Asya And Kittens-双向链表(模拟或者STL list)+并查集(或者STL list的splice()函数)-对不起,我太菜了。。。 (Codeforces Round #541 (Div. 2))

    F. Asya And Kittens time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

随机推荐

  1. ASP.NET验证控件CustomValidator客户端验证DropDownList、TextBox

    <asp:DropDownList ID="ddlTown" runat="server"> <asp:ListItem Value=&quo ...

  2. Mac下Ruby升级与Rails的安装

    也是醉了,网上查了半天一脸懵逼.然后自己动手试试 gem install rails瞬间命令行就没反应了,以为命令行挂了,但是一会儿报错说是没有权限. 好吧,那么来这个 sudo gem instal ...

  3. zoj3955:Saddle Point(想法题)

    传送门 题意 给出n*m的矩阵,询问所有子矩阵中鞍点的个数 鞍点定义:在行唯一最小,在列唯一最大 分析 我们遍历每个点,计算该点对于答案的贡献即可. 每个点的贡献为\((2^{numa[i][j]}) ...

  4. Ubuntu 18 通过ssh连接远程服务器

    ps -e | grep ssh 查看自己的Ubuntu是否开启ssh服务,如果我们要连其他的,那需要有 ssh-client的进程 如果我们的作为主机,那需要有sshd的进程 相应的安装方法: cl ...

  5. 原生JavaScript实战之搜索框筛选功能

    成品图如下所示: 先搭建HTML结构: <div class="wrapper"> <div class="sWrapper"> < ...

  6. 我的spring cloud项目历程(2018.3~2018.9)

    前言 今天是9月17日,趁着山竹的临幸,得以在家里舒适的办公.项目从3月底开始,至今刚好半年.抽几十分钟,总结下半年的历程.对后面的项目,应该也有一点帮助吧. 学习前的七个问题 项目开始前,由于某些特 ...

  7. 使用Quartz实现定时作业

    该文章是系列文章 基于.NetCore和ABP框架如何让Windows服务执行Quartz定时作业 的其中一篇. Quartz是一个开源的作业调度框架,准确的称谓应该是 Quartz.Net,它是Ja ...

  8. _bzoj1500 [NOI2005]维修数列【真·Splay】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1500 注意MAX-SUM的时候,不可以是空串. #include <cstdio> ...

  9. QT5之2D绘图-绘制路径

    在绘制一个复杂的图形的时候,如果你需要重复绘制一个这样的图形,就可以使用到QPainterPath类,然后使用QPainter::drawPath()来进行绘制. QPainterPath类为绘制操作 ...

  10. 题解报告:hdu 2094 产生冠军

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2094 Problem Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打 ...