📅  最后修改于: 2023-12-03 14:59:51.539000             🧑  作者: Mango
在 C++ 中,列表是一组值的集合,并且从 C++ 11 开始,标准库引入了正向列表和元组列表。
正向列表是一种动态数组,支持从前面添加和删除元素。它的实现类似于双向链表,但是更容易可靠,能够提高访问速度。
使用 std::list
类可以定义一个正向列表,还可以使用 std::make_list
初始化。
#include <list>
std::list<int> mylist {1, 2, 3, 4, 5}; // 初始化
使用 push_front
和 pop_front
函数可以从列表的开头添加和删除元素。
mylist.push_front(0); // 在列表开头添加元素
mylist.pop_front(); // 从列表开头删除元素
使用 begin
和 end
函数可以获取正向列表的迭代器,从而进行遍历和操作。
for(auto it = mylist.begin(); it != mylist.end(); ++it) {
std::cout << *it << ' ';
}
除了添加和删除元素,正向列表还有许多其他有用的函数。一些常见的函数包括:
size()
返回列表中元素的数量。empty()
检查列表是否为空。insert()
在指定位置插入元素。erase()
删除指定位置的元素。clear()
删除列表中的所有元素。元组是将多个值组合在一起的类型,允许将一个对象或一组对象作为一个单元处理。元组列表是元组的一种扩展,允许按顺序包含不同类型的值。
使用 std::tuple
类可以定义一个元组类型。通过指定每个值的类型来创建元组,然后使用 std::make_tuple
函数初始化元组。
#include <tuple>
std::tuple<int, double, std::string> mytuple(42, 3.14159, " hello");
auto myothertuple = std::make_tuple(1, 'a', true);
元组列表的元素可以使用索引或 std::get
函数来访问。
auto x = std::get<0>(mytuple); // 返回mytuple的第一个元素
auto y = std::get<1>(myothertuple); // 返回myothertuple的第二个元素
元组列表有许多其他有用的函数。一些常见的函数包括:
tie()
创建一个元组来绑定多个变量。tuple_cat()
将若干个元组连接起来。make_from_tuple()
使用元组来构造对象。#include <iostream>
#include <list>
#include <tuple>
int main() {
// 定义和初始化列表
std::list<int> mylist {1, 2, 3, 4, 5};
std::tuple<int, double, std::string> mytuple(42, 3.14159, "hello");
// 添加和删除元素
mylist.push_front(0);
mylist.pop_front();
// 遍历列表
for(auto it = mylist.begin(); it != mylist.end(); ++it) {
std::cout << *it << ' ';
}
std::cout << '\n';
// 访问元组的元素
auto x = std::get<0>(mytuple);
auto y = std::get<1>(mytuple);
std::string z;
std::tie(x, y, z) = mytuple;
// 输出元组元素
std::cout << x << ' ' << y << ' ' << z << '\n';
return 0;
}
正向列表和元组列表都是 C++ 中强大的数据结构,可以让开发者更加方便地管理和处理数据。在实际使用时,建议根据需求以及程序性能要求选择合适的数据结构来处理数据。