c++中list容器
C++中的STL(标准模板库)提供了许多容器,其中list是其中之一。本文将介绍list容器,并提供示例程序,以便更好地理解其应用。
List是一种双向链表容器,每个节点含有前一个和后一个节点的指针,数据存储在节点内部。该容器可以动态地增加或删除元素,具有高效的插入和删除操作,但访问列表中的数据时速度较慢。
示例程序:
#include <iostream>
#include <list>
int main() {
std::list<int> myList = {5, 2, 7, 9, 1};
// 迭代遍历
for (auto it = myList.begin(); it != myList.end(); ++it) {
std::cout << *it << ' ';
}
std::cout << std::endl;
// 插入
myList.push_back(0);
myList.push_front(6);
// 输出
for (auto n : myList) {
std::cout << n << ' ';
}
std::cout << std::endl;
// 删除
myList.pop_back();
myList.pop_front();
// 输出
for (auto n : myList) {
std::cout << n << ' ';
}
std::cout << std::endl;
return 0;
}
上述代码中,我们首先创建一个包含5个整数的列表。请注意,我们可以在创建时将数据放入列表中。
接下来,我们使用迭代器访问列表中的元素。请注意,我们需要使用自增运算符来遍历整个列表。
然后,我们在列表的末尾和开头插入新的元素。使用push_back()函数在列表末尾插入元素,使用push_front()函数在列表开头插入元素。
最后,我们使用pop_back()函数和pop_front()函数从列表的末尾和开头删除元素。这些函数无需任何参数即可删除元素。
除了上述操作外,这里还有一些其他list容器的操作:
- clear()删除所有元素
- erase()删除元素
- size()返回元素数量
- merge()将两个列表合并成一个
- remove()删除某个值的元素
下面给出一段关于如何使用这些操作的示例程序:
#include <iostream>
#include <list>
#include <algorithm>
int main() {
std::list<int> list1 = {3, 7, 1, 8};
std::list<int> list2 = {9, 2, 5};
list1.sort(); // 排序
list2.reverse(); // 翻转
list1.merge(list2); // 合并
list1.remove(8); // 删除值为8的元素
std::cout << "Size: " << list1.size() << std::endl;
for (auto n : list1) {
std::cout << n << ' ';
}
std::cout << std::endl;
return 0;
}
在上述示例中,我们创建了两个列表并对它们进行排序和翻转操作。接下来,我们将这两个列表合并为一个。请注意,两个列表必须是有序的(在我们的示例中,我们手动对list1进行了排序)。最后,我们删除值为8的元素,并输出当前列表中的元素数量和元素值。
总结:
list是一种基于链表的高效容器,它允许动态地增加或删除元素,并且具有高效的插入和删除操作。在引入STL(标准模板库)时,包含list就是为了方便开发人员使用它。此外,list还支持许多其他的操作,如排序、合并、删除等等。