【C++】容器list

大家好,我是苏貝,本篇博客带大家了解C++的list类,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️
在这里插入图片描述


list是带头双向循环链表。Vector的insert/erase都会导致迭代器失效,list的erase会,但insert不会

1. sort

在这里插入图片描述

默认升序(1),如果想要排降序,那就要传仿函数(2)
在这里插入图片描述

排降序

在这里插入图片描述

不要太使用list的sort,它较vector的sort(实际上sort并不是vector的成员函数,而是algorithm的函数)效率较慢

在release下

在这里插入图片描述
在这里插入图片描述

2. unique

在这里插入图片描述

去重,去重前要先排序

在这里插入图片描述

3. remove

在这里插入图片描述

删除所有同val相等的元素

在这里插入图片描述

4. splice

在这里插入图片描述

从x中转移元素,插入到pos位置,因此x的被转移的元素就不会再存在于x了

在这里插入图片描述


好了,那么本篇博客就到此结束了,如果你觉得本篇博客对你有些帮助,可以给个大大的赞👍吗,感谢看到这里,我们下篇博客见❤️

### 使用 C++ STL `list` 容器存储结构体 为了展示如何使用 C++ 的 `list` 容器来存储结构体,下面提供了一个完整的例子。此示例定义了一个简单的结构体并展示了如何将其实例化对象存入 `list` 中以及遍历这些对象。 #### 结构体定义与列表操作 ```cpp #include <iostream> #include <list> struct Person { std::string name; int age; // 构造函数用于初始化成员变量 Person(std::string n, int a) : name(n), age(a) {} }; void printList(const std::list<Person>& people) { for (const auto& person : people) { std::cout << "Name: " << person.name << ", Age: " << person.age << '\n'; } } int main() { // 创建一个Person类型的list容器 std::list<Person> myList; // 向list中添加一些Person对象 myList.emplace_back("Alice", 30); myList.push_back(Person("Bob", 25)); myList.emplace_front("Charlie", 35); // 输出当前list中的所有元素 std::cout << "The list contains:\n"; printList(myList); return 0; } ``` 上述代码创建了一个名为 `Person` 的简单结构体,并通过不同的方式向 `list` 添加该结构体的对象。这里使用了三种方法:`emplace_back()`、`push_back()` 和 `emplace_front()` 来插入新项到列表的不同位置[^1]。 此外,在实际应用中可能还需要考虑线程安全等问题;如果程序涉及多线程环境,则可以利用 `std::thread` 或者其他同步机制确保访问共享资源的安全性[^2]。 对于更复杂的场景下涉及到大量动态分配的小型对象时,还可以结合自定义的内存池技术优化性能表现,减少频繁的新建销毁带来的开销[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值