亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C++ 中的 std::list 示例

什么是 std::list?

在 C++ 中,std::list 指的是存储容器。 std:list 允许您从任何地方插入和删除项目。 std::list 实现为双向链表。这意味着可以双向和顺序访问列表数据。

标准模板库列表不支持快速随机访问,但支持从各个方向顺序访问。

您可以将列表元素分散在不同的内存块中。顺序访问数据所需的信息存储在容器中。 std::list 可以在运行时根据需要从两端扩展和收缩。内部分配器自动满足存储要求。

在本 C++ 教程中,您将学习:

为什么使用 std::list?

这里是使用 std::List 的原因:

列表语法

要定义 std::list,我们必须导入 头文件。这是 std::list 定义语法:

template < class Type, class Alloc =allocator<T> > class list;

以下是对上述参数的说明:

示例 1:

#include <algorithm>
#include <iostream>
#include <list>
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };

	for (int x : my_list) {
		std::cout << x << '\n';
	}
}

输出:

下面是代码截图:

代码说明:

  1. 包含算法头文件以使用其功能。
  2. 包含 iostream 头文件以使用其功能。
  3. 包含列表头文件以使用其功能。
  4. 调用 main() 函数。程序逻辑应添加到此函数的主体中。
  5. 使用一组 4 个整数创建一个名为 my_list 的列表。
  6. 使用 for 循环创建循环变量 x。此变量将用于迭代列表元素。
  7. 在控制台上打印出列表的值。
  8. for 循环体的结尾。
  9. main() 函数体的结尾。

C++ 列表函数

以下是常用的 std::list 函数:

功能 说明 insert()这个函数在迭代器指向的位置之前插入一个新项目。push_back()这个函数在列表的末尾添加一个新项目。push_front()它在列表的前面添加一个新项目。pop_front()它删除列表的first item.size()这个函数确定列表元素的个数。front()确定列表的第一项。back()确定列表的最后一项。reverse()反转列表项。merge()合并两个排序列表。

构造函数

下面是头文件提供的函数列表:

示例 2:

#include <iostream>
#include <list>
using namespace std;
int main(void) {
	list<int> l;
	list<int> l1 = { 10, 20, 30 };
	list<int> l2(l1.begin(), l1.end());
	list<int> l3(move(l1));  
	cout << "Size of list l: " << l.size() << endl;
	cout << "List l2 contents: " << endl;
	for (auto it = l2.begin(); it != l2.end(); ++it)
	      cout << *it << endl;
	cout << "List l3 contents: " << endl;
	for (auto it = l3.begin(); it != l3.end(); ++it)
		cout << *it << endl;
	return 0;
}

输出:

下面是代码截图:

代码说明:

  1. 包含 iostream 头文件以使用其功能。
  2. 包含列表头文件以使用其功能。
  3. 在代码中包含 std 命名空间以使用其类而不调用它。
  4. 调用 main() 函数。程序逻辑应添加到此函数的主体中。
  5. 创建一个名为 l 的空列表。
  6. 用一组 3 个整数创建一个名为 l1 的列表。
  7. 创建一个名为 l2 的列表,其中包含名为 l1 的列表中的所有元素,从头到尾。
  8. 使用移动语义创建一个名为 l3 的列表。列表 l3 将具有与列表 l2 相同的内容。
  9. 在控制台上打印名为 l 的列表的大小以及其他文本。
  10. 在控制台上打印一些文本。
  11. 创建一个名为 it 的迭代器,并用它来迭代名为 l2 的列表中的元素。
  12. 在控制台上打印名为 l2 的列表的元素。
  13. 在控制台上打印一些文本。
  14. 创建一个名为 it 的迭代器,并用它来迭代名为 l3 的列表中的元素。
  15. 在控制台上打印名为 l3 的列表的元素。
  16. 程序必须在成功完成后返回值。
  17. main() 函数体的结尾。

容器属性

以下是容器属性列表:

财产 说明 SequenceSequence 容器以严格的线性顺序对其元素进行排序。元素是通过它们在序列中的位置来访问的。双向链表每个元素都有关于如何定位前一个和下一个元素的信息。这允许插入和删除操作的恒定时间。分配器感知分配器对象用于动态修改存储大小。

插入列表

我们可以使用不同的函数将值插入列表。让我们演示一下:

示例 3:

#include <algorithm>
#include <iostream>
#include <list>
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };
	my_list.push_front(11);
	my_list.push_back(18);
	auto it = std::find(my_list.begin(), my_list.end(), 10);
	if (it != my_list.end()) {
		my_list.insert(it, 21);
	}
	for (int x : my_list) {
		std::cout << x << '\n';
	}
}

输出:

下面是代码截图:

代码说明:

  1. 包含算法头文件以使用其功能。
  2. 包含 iostream 头文件以使用其功能。
  3. 包含列表头文件以使用其功能。
  4. 调用 main() 函数。程序逻辑应添加到此函数的主体中。
  5. 使用一组 4 个整数创建一个名为 my_list 的列表。
  6. 将元素 11 插入名为 my_list 的列表的前面。
  7. 在名为 my_list 的列表末尾插入元素 18。
  8. 创建一个迭代器 it 并使用它从列表 my_list 中查找元素 10。
  9. 使用 if 语句来确定是否找到了上述元素。
  10. 如果找到,则在上述元素之前插入元素 21。
  11. if 语句主体的结尾。
  12. 使用 for 循环创建循环变量 x。此变量将用于迭代列表元素。
  13. 在控制台上打印出列表的值。
  14. for 循环体的结尾。
  15. main() 函数体的结尾。

从列表中删除

可以从列表中删除项目。 erase() 函数允许您从列表中删除一个项目或一系列项目。

示例 4:

#include <algorithm>
#include <iostream>
#include <list>
using namespace std;
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };
	cout << "List elements before deletion: ";
	for (int x : my_list) {
		std::cout << x << '\n';
	}
	list<int>::iterator i = my_list.begin();
	my_list.erase(i);
	cout << "\nList elements after deletion: ";
	for (int x : my_list) {
		std::cout << x << '\n';
	}
	return 0;
}

输出:

下面是代码截图:

代码说明:

  1. 包含算法头文件以使用其功能。
  2. 包含 iostream 头文件以使用其功能。
  3. 包含列表头文件以使用其功能。
  4. 在我们的程序中包含 std 命名空间以使用它的类而不调用它。
  5. 调用 main() 函数。程序逻辑应添加到此函数的主体中。
  6. 使用一组 4 个整数创建一个名为 my_list 的列表。
  7. 在控制台上打印一些文本。
  8. 使用 for 循环创建循环变量 x。此变量将用于迭代列表元素。
  9. 在控制台上打印出列表的值。
  10. for 循环体的结尾。
  11. 创建一个指向列表第一个元素的迭代器 i。
  12. 使用迭代器 i 指向的 erase() 函数。
  13. 在控制台上打印一些文本。
  14. 使用 for 循环创建循环变量 x。此变量将用于迭代列表元素。
  15. 在控制台上打印出列表的值。这是在删除之后。
  16. for 循环体的结尾。
  17. 程序必须在成功完成后返回一个值。
  18. main() 函数体的结尾。

总结:


C语言

  1. C++ 中的运算符示例:什么是、类型和程序
  2. C++ do...while 循环与示例
  3. 带有示例的 C++ Switch Case 语句
  4. C++ 动态分配数组的例子
  5. 带有示例的 C++ 指针
  6. 带有示例的 C++ 运算符重载
  7. C++ 结构与示例
  8. 带有程序示例的 C++ 函数
  9. 结构和类的区别:用 C++ 示例解释
  10. 集合中的 Python 计数器示例
  11. 带有示例的 Python 列表计数()
  12. Python 列表 index() 与示例