【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` 基本用法的介绍。