当前位置:实例文章 » 其他实例» [文章]【C++】STL---list基本用法介绍

【C++】STL---list基本用法介绍

发布人:shili8 发布时间:2025-02-11 08:43 阅读次数:0

**STL---list基本用法介绍**

在 C++ 中,`std::list` 是一种双向链表容器,它提供了高效的插入、删除和查找元素的功能。相比于其他 STL 容器,如 `std::vector` 和 `std::deque`,`std::list` 在频繁插入或删除元素时表现更好。

**1. list 的基本用法**

首先,我们需要包含 `list` 头文件:

cpp#include 

然后,我们可以创建一个 `list` 对象:
cppstd::list<int> myList;

这个例子中,`myList` 是一个空的 `list` 容器,它存储整型值。

**2. 插入元素**

我们可以使用 `push_back()` 或 `emplace_back()` 方法向 `list` 的末尾插入新元素:
cpp// 使用 push_back() 方法myList.push_back(10);
myList.push_back(20);

// 使用 emplace_back() 方法myList.emplace_back(30);

这将创建一个包含三个整型值的 `list`:10、20 和30。

**3. 删除元素**

我们可以使用 `erase()` 方法删除 `list` 中的一个或多个元素:
cpp// 删除第一个元素(10)
myList.erase(myList.begin());

// 删除第二个元素(20)
myList.erase((--myList.end()));

// 删除第三个元素(30)
myList.erase(--myList.end());

这将删除 `list` 中的所有元素。

**4. 查找元素**

我们可以使用 `find()` 方法查找 `list` 中的一个或多个元素:
cpp// 查找第一个等于10 的元素auto it = myList.find(10);

if (it != myList.end()) {
 std::cout << "Found: " << *it << std::endl;
}

// 查找所有等于20 的元素for (auto it = myList.begin(); it != myList.end(); ++it) {
 if (*it ==20) {
 std::cout << "Found: " << *it << std::endl;
 }
}

这将查找 `list` 中的所有元素。

**5. list 的迭代器**

`std::list` 提供了多种类型的迭代器,包括:

* `iterator`: 双向迭代器,可以用于遍历 `list`。
* `const_iterator`: 双向常量迭代器,可以用于遍历 `list` 的常量版本。
* `reverse_iterator`: 反向迭代器,可以用于反向遍历 `list`。

我们可以使用这些迭代器来遍历 `list`:
cpp// 使用 iterator 遍历 listfor (auto it = myList.begin(); it != myList.end(); ++it) {
 std::cout << *it << " ";
}

std::cout << std::endl;

// 使用 const_iterator 遍历 list 的常量版本const auto& cmyList = myList;
for (const auto& it : cmyList) {
 std::cout << it << " ";
}

std::cout << std::endl;

// 使用 reverse_iterator 反向遍历 listfor (auto rit = myList.rbegin(); rit != myList.rend(); ++rit) {
 std::cout << *rit << " ";
}

这将输出 `list` 中的所有元素。

**6. list 的大小**

我们可以使用 `size()` 方法获取 `list` 的大小:
cppstd::cout << "Size: " << myList.size() << std::endl;

这将输出 `list` 的大小。

**7. list 的空性**

我们可以使用 `empty()` 方法检查 `list` 是否为空:
cppif (myList.empty()) {
 std::cout << "List is empty." << std::endl;
}

这将输出 "List is empty." 如果 `list`为空。

**8. list 的清空**

我们可以使用 `clear()` 方法清空 `list`:
cppmyList.clear();

这将清空 `list`。

**9. list 的复制**

我们可以使用 `assign()` 方法复制一个 `list` 到另一个 `list`:
cppstd::list<int> anotherList;
anotherList.assign(myList.begin(), myList.end());

这将复制 `myList` 到 `anotherList`。

**10. list 的交换**

我们可以使用 `swap()` 方法交换两个 `list`:
cppstd::list<int> anotherList;
anotherList.swap(myList);

这将交换 `myList` 和 `anotherList`。

以上就是关于 STL 中的 `list` 基本用法的介绍。

其他信息

其他资源

Top