简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
1.前言
本篇目的:理解C++之list成员函数应用。
2.list成员函数介绍
C++中的std::list是一个双向链表的容器,它提供了许多成员函数用于对链表进行操作。以下是一些常用的std::list成员函数的列表:
-
构造函数:
- list():默认构造函数。
- list(const list& other):拷贝构造函数。
- list(size_type count, const T& value):构造函数,创建包含count个值为value的元素的链表。
-
迭代器(Iterator)相关函数:
- begin():返回指向链表第一个元素的迭代器。
- end():返回指向链表尾后位置的迭代器。
- rbegin():返回指向链表最后一个元素的逆向迭代器。
- rend():返回指向链表首元素前位置的逆向迭代器。
-
容量相关函数:
- empty():检查链表是否为空。
- size():返回链表中元素的数量。
- max_size():返回链表所允许的最大元素数量。
-
元素访问与修改相关函数:
- front():返回链表的第一个元素的引用。
- back():返回链表的最后一个元素的引用。
- push_back(const T& value):将元素加入链表尾部。
- push_front(const T& value):将元素加入链表头部。
- pop_back():删除链表尾部的元素。
- pop_front():删除链表头部的元素。
-
修改容器相关函数:
- clear():清空链表中的所有元素。
- erase(iterator position):删除指定位置处的元素。
- erase(iterator first, iterator last):删除[first, last)范围内的元素。
- insert(iterator position, const T& value):在指定位置之前插入元素。
3.应用实例
1. begin()
和 end()
函数:
#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 begin() 函数获取列表的第一个元素的迭代器std::list<int>::iterator iterStart = myList.begin();// 使用 end() 函数获取列表的最后一个元素的迭代器std::list<int>::iterator iterEnd = myList.end();// 遍历列表for (std::list<int>::iterator iter = iterStart; iter != iterEnd; ++iter) {std::cout << *iter << " ";}return 0;
}
2. rbegin()
和 rend()
函数:
#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 rbegin() 函数获取列表的最后一个元素的反向迭代器std::list<int>::reverse_iterator iterStart = myList.rbegin();// 使用 rend() 函数获取列表的第一个元素的反向迭代器std::list<int>::reverse_iterator iterEnd = myList.rend();// 遍历列表for (std::list<int>::reverse_iterator iter = iterStart; iter != iterEnd; ++iter) {std::cout << *iter << " ";}return 0;
}
3. empty()
函数:
#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 empty() 函数判断列表是否为空if (myList.empty()) {std::cout << "List is empty" << std::endl;} else {std::cout << "List is not empty" << std::endl;}return 0;
}
4. size()
函数:
#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 size() 函数获取列表的元素个数std::cout << "Size of list: " << myList.size() << std::endl;return 0;
}
5. max_size()
函数:
#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 max_size() 函数获取列表的最大容量std::cout << "Max size of list: " << myList.max_size() << std::endl;return 0;
}
6. front()
函数:
#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 front() 函数获取列表的第一个元素int firstElement = myList.front();std::cout << "First element of list: " << firstElement << std::endl;return 0;
}
7. back()
函数:
#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 back() 函数获取列表的最后一个元素int lastElement = myList.back();std::cout << "Last element of list: " << lastElement << std::endl;return 0;
}
8. push_back()
函数:
#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 push_back() 函数在列表末尾插入元素myList.push_back(6);// 输出列表中的元素for (int num : myList) {std::cout << num << " ";}return 0;
}
9. push_front()
函数:
#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 push_front() 函数在列表开头插入元素myList.push_front(0);// 输出列表中的元素for (int num : myList) {std::cout << num << " ";}return 0;
}
10. pop_back()
函数:
#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 pop_back() 函数删除列表末尾的元素myList.pop_back();// 输出列表中的元素for (int num : myList) {std::cout << num << " ";}return 0;
}
11. pop_front()
函数:
#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 pop_front() 函数删除列表开头的元素myList.pop_front();// 输出列表中的元素for (int num : myList) {std::cout << num << " ";}return 0;
}
12. clear()
函数:
#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 clear() 函数清空列表myList.clear();// 输出列表中的元素(为空)for (int num : myList) {std::cout << num << " ";}return 0;
}
13. erase()
函数:
#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 erase() 函数删除列表中的指定元素std::list<int>::iterator iter = myList.erase(myList.begin()); // 删除第一个元素// 输出列表中的元素for (int num : myList) {std::cout << num << " ";}return 0;
}
14. insert()
函数:
#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 insert() 函数在指定位置插入元素std::list<int>::iterator iter = myList.insert(myList.begin(), 0); // 在第一个元素前插入0// 输出列表中的元素for (int num : myList) {std::cout << num << " ";}return 0;
}