C++之list容器介绍及使用方式
list容器简介
list容器是C++标准库中的一种容器类型,它是一个链表结构,可以方便地进行插入、删除和移动操作。它与数组和向量相比,可以更好地处理元素移动或删除操作。list容器的所有操作都具有良好的时间复杂度,这使得它成为一种优秀的容器类型。
list容器的使用
include头文件
使用list容器需要引入相应的头文件,即:
#include <list>
声明list容器
在使用list容器之前,需要先声明一个list对象,可以使用以下语法:
std::list<元素类型> mylist;
list容器的常用操作
插入元素
使用push_back() 或 push_front() 方法向 list 容器中插入元素,其中 push_back() 将元素插入容器尾部,而 push_front() 则插入容器的头部。
std::list<int> mylist;
mylist.insert(mylist.begin(), 5); // 在 list 容器头部插入元素5
mylist.push_back(10); // 在 list 容器尾部插入元素10
删除元素
使用erase() 方法可以删除 list 容器中的元素,可以删除指定位置处的元素,也可以删除某个范围内的元素。
以下代码演示了如何删除list容器中第一个元素和最后一个元素:
std::list<int> mylist;
mylist.push_back(5);
mylist.push_back(10);
mylist.pop_back(); // 删除最后一个元素
mylist.pop_front(); // 删除第一个元素
访问元素
使用 list 容器提供的 begin() 和 end() 方法可以遍历 list 容器中的元素。如:
std::list<int> mylist;
mylist.push_back(5);
mylist.push_back(10);
for (std::list<int>::iterator it = mylist.begin(); it != mylist.end(); it++) {
std::cout << *it << std::endl; // 依次输出:5 敲回车 10 敲回车
}
获取属性
list 容器提供了很多属性方法,如 size() 可以返回 list 容器中元素的个数。还可以使用 empty() 方法判断 list 容器是否为空。
std::list<int> mylist;
mylist.push_back(5);
mylist.push_back(10);
std::cout << mylist.size() << std::endl; // 输出 2
std::cout << mylist.empty() << std::endl; // 输出 false
list容器实际应用
实例1:使用list容器存储和排序字符串
以下代码演示了使用 list 容器存储字符串并按字典序排序:
#include <iostream>
#include <list>
#include <algorithm>
bool cmp(const std::string& s1, const std::string& s2) {
return s1 < s2;
}
int main()
{
std::list<std::string> mylist {"hello", "world", "cpp", "stl", "algorithm"};
std::cout << "before sort:" << std::endl;
for (std::string str : mylist) {
std::cout << str << " ";
}
std::cout << std::endl;
mylist.sort(cmp);
std::cout << "after sort:" << std::endl;
for (std::string str : mylist) {
std::cout << str << " ";
}
std::cout << std::endl;
return 0;
}
以上代码输出:
before sort:
hello world cpp stl algorithm
after sort:
algorithm cpp hello stl world
实例2: 使用list容器实现十进制转二进制
使用 list 容器可以实现将十进制数转为二进制数。循环除以2,将余数从头插入 list 容器中,最后将容器中的元素转成二进制即可。
#include <iostream>
#include <list>
int main() {
std::list<int> mylist;
int num = 15;
while (num > 0) {
mylist.push_front(num % 2); // 余数入队
num /= 2; // 除2
}
std::cout << "15的二进制数为:";
for (int digit : mylist) {
std::cout << digit;
}
std::cout << std::endl;
return 0;
}
以上代码输出:
15的二进制数为:1111
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++之list容器介绍及使用方式 - Python技术站