C++ <list> begin / end 函数
begin 和 end 是 list 中最重要的迭代器函数,用于获取链表的起始和结束迭代器。
begin 和 end 是容器类的成员函数:
begin返回指向链表第一个元素的迭代器end返回指向链表最后一个元素之后位置的迭代器(哨兵迭代器)
这两个函数是 C++ 标准库算法和范围 for 循环的基础。
单词释义: begin 表示"开始",end 表示"结束"。
基本语法与参数
语法格式
iterator begin(); const_iterator begin() const; iterator end(); const_iterator end() const;
函数说明
- 返回值:
begin()返回指向第一个元素的迭代器,end()返回哨兵迭代器。
实例
示例 1:遍历链表
实例
#include <iostream>
#include <list>
int main() {
std::list<int> numbers = {10, 20, 30, 40, 50};
// 使用迭代器遍历
std::cout << "使用迭代器遍历: ";
for(auto it = numbers.begin(); it != numbers.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
#include <list>
int main() {
std::list<int> numbers = {10, 20, 30, 40, 50};
// 使用迭代器遍历
std::cout << "使用迭代器遍历: ";
for(auto it = numbers.begin(); it != numbers.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
运行结果预期:
使用迭代器遍历: 10 20 30 40 50
示例 2:范围 for 循环
实例
#include <iostream>
#include <list>
int main() {
std::list<std::string> names = {"Alice", "Bob", "Charlie"};
std::cout << "范围 for 循环: ";
for(const auto& name : names) {
std::cout << name << " ";
}
std::cout << std::endl;
return 0;
}
#include <list>
int main() {
std::list<std::string> names = {"Alice", "Bob", "Charlie"};
std::cout << "范围 for 循环: ";
for(const auto& name : names) {
std::cout << name << " ";
}
std::cout << std::endl;
return 0;
}
运行结果预期:
范围 for 循环: Alice Bob Charlie
示例 3:使用 STL 算法
实例
#include <iostream>
#include <list>
#include <algorithm>
int main() {
std::list<int> numbers = {5, 2, 8, 1, 9, 3};
// 排序
numbers.sort();
std::cout << "排序后: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// 查找
auto it = std::find(numbers.begin(), numbers.end(), 8);
if(it != numbers.end()) {
std::cout << "找到: " << *it << std::endl;
}
return 0;
}
#include <list>
#include <algorithm>
int main() {
std::list<int> numbers = {5, 2, 8, 1, 9, 3};
// 排序
numbers.sort();
std::cout << "排序后: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// 查找
auto it = std::find(numbers.begin(), numbers.end(), 8);
if(it != numbers.end()) {
std::cout << "找到: " << *it << std::endl;
}
return 0;
}
运行结果预期:
排序后: 1 2 3 5 8 9 找到: 8
示例 4:反向迭代器
实例
#include <iostream>
#include <list>
int main() {
std::list<int> numbers = {1, 2, 3, 4, 5};
std::cout << "正向: ";
for(auto it = numbers.begin(); it != numbers.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
std::cout << "反向: ";
for(auto it = numbers.rbegin(); it != numbers.rend(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
#include <list>
int main() {
std::list<int> numbers = {1, 2, 3, 4, 5};
std::cout << "正向: ";
for(auto it = numbers.begin(); it != numbers.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
std::cout << "反向: ";
for(auto it = numbers.rbegin(); it != numbers.rend(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
运行结果预期:
正向: 1 2 3 4 5 反向: 5 4 3 2 1
C++ 容器类 <list>
点我分享笔记