#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. html title属性

    <table class="table table-hover table-striped"> @foreach (var article in Model) { &l ...

  2. bzoj 1632: [Usaco2007 Feb]Lilypad Pond【bfs】

    直接bfs,在过程中更新方案数即可 #include<iostream> #include<cstdio> #include<queue> using namesp ...

  3. A - I'm bored with life

    Holidays have finished. Thanks to the help of the hacker Leha, Noora managed to enter the university ...

  4. LightOj 1138 Trailing Zeroes (III)

    题目描述: 假设有一个数n,它的阶乘末尾有Q个零,现在给出Q,问n最小为多少? 解题思路: 由于数字末尾的零等于min(因子2的个数,因子5的个数),又因为2<5,那么假设有一无限大的数n,n= ...

  5. Use Power bi Mobile Show SSRS 2016 Mobile Report;使用 Power BI Mobile 查阅ssrs2016 mobile report

    使用 power bi mobile 查阅 ssrs 2016 mobile report 很简单,以下是IOS客户端的演示. 系统自带了演示数据,包含power bi 的和 ssrs mobile ...

  6. MyEclipse中Tomcat对应JVM的参数配置

    MyEclipse中Tomcat对应JVM的参数配置: -Xmx512M -Xms256M -XX:MaxPermSize=256m

  7. Hanlder + 弱引用防内存漏泄示例*

    Hanlder + 弱引用防内存漏泄示例: public class MainActivity extends AppCompatActivity { public final MyHandler h ...

  8. iOS 集成银联支付(绕过文档的坑,快速集成)-转

    本文是投稿文章,作者:南栀倾寒当初集成支付宝的时候,觉得见了这么丑的代码,加上这么难找的下载地址,在配上几乎为零的文档,寒哥就要吐血了. 下午去集成银联,才知道血吐的早了. 下载地址:https:// ...

  9. Java几种常见的排序方法

    日常操作中常见的排序方法有:冒泡排序.快速排序.选择排序.插入排序.希尔排序,甚至还有基数排序.鸡尾酒排序.桶排序.鸽巢排序.归并排序等. 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一 ...

  10. 【原】无脑操作:Eclipse + Maven + jFinal + MariaDB 环境搭建

    一.开发环境 1.windows 7 企业版 2.Eclipse IDE for Enterprise Java Developers  Version: 2019-03 (4.11.0) 3.JDK ...