在C++标准模板库中列表

时间:2020-02-23 14:30:00  来源:igfitidea点击:

在本文中,我们将重点关注C++中的List。

标准模板库是一个通用库,由不同的C++模板类组成。
它包括可以对不同类型的数据记录/值进行操作的各种类和方法。

这样,我们的意思是,我们不必一遍又一遍地定义类和方法来对不同的数据类型值执行相同的操作。

标准模板库的基本组件是:

  • 容器
  • 迭代器
  • 演算法

今天,我们将重点关注"容器"下的列表。

什么是C++中的列表?

"列表"是容器的一部分,是标准模板库的组件,使程序员能够创建和存储不同数据类型的数据值。

容器的类型如下:

  • 序列容器
  • 关联容器
  • 容器适配器
  • 无序关联容器

List是一个"顺序容器",使我们能够存储和使用不同类型的数据值。
顺序容器仅允许程序员以顺序方式访问各种数据类型的数据值。

因此,列表在不连续的内存位置存储数据时起作用,并以顺序的方式访问值。

"列表"允许我们从任何特定的存储位置插入和删除数据值。
此外,我们可以双向但顺序地访问列表的元素。

使用列表,我们可以将数据元素存储在内存的不同块中的不同位置。
列表可以根据需要在动态运行时在两端进行收缩和扩展。

列表的语法

看看下面的语法!

list <data_type> list_name;

我们可以为列表设置一个迭代器,以便访问元素,如下所示:

list <data_type> :: iterator iterator-name;

列表使我们能够在运行时将不同数据类型的值存储在不同的存储块上,并且可以双向方式顺序访问。

C++中列表重要功能的示例

让我们首先遍历一个列表,并打印列表中存在的所有数据值,如下所示。

例:

#include <iostream> 
#include <list> 
#include <iterator> 
using namespace std; 

void view_list(list <int> li) 
{ 
  list <int> :: iterator x; 
  for(x = li.begin(); x != li.end(); ++x) 
      cout << '\t' << *x; 
  cout << '\n'; 
} 
 
int main() 
{ 
 
  list <int> X = {1,3,5,7,9};
  view_list(X);
 
  return 0; 
 
} 

输出:

1	3	5	7	9

列表中一些最常用的功能

  • list.begin():返回指向列表的第一个元素的迭代器元素。

  • list.end():返回指向列表最后一个元素的迭代器元素。

  • list.sort():用于对列表进行排序的内置函数。

  • list.reverse():内置函数,用于反转列表。

  • list.push_front(element):在列表的开头添加一个元素。

  • list.push_back(element):在列表末尾添加一个元素。

  • list.pop_front():删除第一个元素,并将列表的大小减1。

  • list.pop_back():删除最后一个元素,并将列表的大小减1。

  • list.front():返回列表的第一个值

  • list.back():返回列表的最后一个值。

例:

#include <iostream> 
#include <list> 
#include <iterator> 
using namespace std; 
 
 
void view_list(list <int> li) 
{ 
  list <int> :: iterator x; 
  for(x = li.begin(); x != li.end(); ++x) 
      cout << '\t' << *x; 
  cout << '\n'; 
} 
 
int main() 
{ 
 
  list <int> X = {1,3,5,7,9}; 
  
  cout<<"Original list:\n";
  view_list(X);
  
  X.push_front(100); 
  cout<<"List after adding element using push_front() function:\n";
  view_list(X);
  
  X.push_back(200); 
  cout<<"List after adding element using push_back() function:\n";
  view_list(X);
 
  cout<<"Reversing a List:\n";
  X.reverse();
  view_list(X);
  
  cout<<"Sorting a List:\n";
  X.sort();
  view_list(X);
  
  X.pop_front(); 
  cout<<"List after removing element using pop_front() function:\n";
  view_list(X);
  
  X.pop_back(); 
  cout<<"List after removing element using pop_back() function:\n";
  view_list(X);
  
  return 0; 
 
} 

输出:

Original list:
	1	3	5	7	9
List after adding element using push_front() function:
	100	1	3	5	7	9
List after adding element using push_back() function:
	100	1	3	5	7	9	200
Reversing a List:
	200	9	7	5	3	1	100
Sorting a List:
	1	3	5	7	9	100	200
List after removing element using pop_front() function:
	3	5	7	9	100	200
List after removing element using pop_back() function:
	3	5	7	9	100