第九层(7):STL之list(下)

简介: 第九层(7):STL之list(下)


单个数据访问


因为在list中空间不是连续的,同时,list的迭代器也不支持随机访问,所以对于list来说[ ]和at是不适用于list的,可以利用迭代器++或者–来访问其他元素

front();//返回第一个元素
back();//返回最后一个元素


使用:


#include<iostream>
#include<list>
using namespace std;
void print(list<int>& l)
{
  for (list<int>::iterator b=l.begin(); b != l.end(); b++)
  {
  cout << *b << " ";
  }
  cout << endl;
}
void test1()
{
  list<int> l;
  for (int i = 0; i < 10; i++)
  {
  l.push_back(i);
  }
  print(l);
  cout << l.front() << endl;
  cout << l.back() << endl;
}
int main()
{
  test1();
  return 0;
}

0eacb84100b54626af849e6b562bf92a.png


反转操作


在list中可以反转链表,就是让链表中所有元素交换位置,后面的与前面的交换。

reverse();//反转链表


使用:


#include<iostream>
#include<list>
using namespace std;
void print(list<int>& l)
{
  for (list<int>::iterator b=l.begin(); b != l.end(); b++)
  {
  cout << *b << " ";
  }
  cout << endl;
}
void test1()
{
  list<int> l;
  for (int i = 0; i < 10; i++)
  {
  l.push_back(i);
  }
  cout << "反转前" << endl;
  print(l);
  cout << "反转后" << endl;
  l.reverse();
  print(l);
}
int main()
{
  test1();
  return 0;
}

0a2653c851af460fa595bd959398a8f1.png


排序


在容器当中,可以使用一个算法函数来对容器内的数据进行一个排序,默认从小到大,但是是对于支持随机访问的迭代器,可以使用标准算法,对于list这种不支持随机访问的迭代器,是不可以用标准算法的,只能用类内的算法

sort();//排序


使用:


#include<iostream>
#include<list>
using namespace std;
void print(list<int>& l)
{
  for (list<int>::iterator b=l.begin(); b != l.end(); b++)
  {
  cout << *b << " ";
  }
  cout << endl;
}
void test1()
{
  list<int> l;
  for (int i = 9; i >=0; i--)
  {
  l.push_back(i);
  }
  print(l);
  l.sort();
  print(l);
}
int main()
{
  test1();
  return 0;
}

0eacb84100b54626af849e6b562bf92a.png

那想从大到小排呢?这个时候需要一个函数,函数返回类型为bool,内部可以让传参的两个参数进行比较,任何前者大于后者,返回真,如果小于返回假,返回假就会进行交换

#include<iostream>
#include<list>
using namespace std;
void print(list<int>& l)
{
  for (list<int>::iterator b=l.begin(); b != l.end(); b++)
  {
  cout << *b << " ";
  }
  cout << endl;
}
bool com(int a, int b)
{
  return a > b;//可以简化成这样,返回的是a>b的结果,如果结果是对的,不进行交换,如果不对,进行交换
}
void test1()
{
  list<int> l;
  for (int i = 0; i < 10; i++)
  {
  l.push_back(i);
  }
  print(l);
  l.sort(com);
  print(l);
}
int main()
{
  test1();
  return 0;
}

2d65d23f6d4748949b924e4057485923.png


下一座石碑


这座石碑倒下了,露出了下一座石碑…


😘预知后事如何,关注新专栏,和我一起征服C++这座巨塔

🚀专栏:C++爬塔日记

🙉都看到这里了,留下你们的👍点赞+⭐收藏+📋评论吧🙉

相关文章
|
1月前
|
存储 搜索推荐 C++
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
48 2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
|
1月前
|
存储 C++ 容器
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器1
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
52 5
|
1月前
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
54 2
|
1月前
|
C++
【C++】C++ STL 探索:List使用与背后底层逻辑(三)
【C++】C++ STL 探索:List使用与背后底层逻辑
|
1月前
|
C++
【C++】C++ STL 探索:List使用与背后底层逻辑(二)
【C++】C++ STL 探索:List使用与背后底层逻辑
|
1月前
|
存储 编译器 C++
【C++】C++ STL 探索:List使用与背后底层逻辑(一)
【C++】C++ STL 探索:List使用与背后底层逻辑
|
4月前
|
存储 算法 程序员
C++基础知识(八:STL标准库(Vectors和list))
C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集合,它提供给程序员一些标准的数据结构的实现如 queues(队列), lists(链表), 和 stacks(栈)等. STL容器的提供是为了让开发者可以更高效率的去开发,同时我们应该也需要知道他们的底层实现,这样在出现错误的时候我们才知道一些原因,才可以更好的去解决问题。
|
5月前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
902 1
|
4月前
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
|
4月前
|
运维 关系型数据库 Java
PolarDB产品使用问题之使用List或Range分区表时,Java代码是否需要进行改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。