C++ vector 中的 front() 和 back() 会删除元素吗 返回的是引用还是副本

发布时间:2025-04-29      访问量:44
在C++里,`std::vector` 的 `front()` 和 `back()` 方法既不会删除元素,也不会返回副本,而是返回相应元素的引用。下面为你详细说明:

1. `front()` 和 `back()` 不会删除元素
`front()` 方法返回的是 `std::vector` 首个元素的引用,`back()` 方法返回的是 `std::vector` 最后一个元素的引用,它们都不会删除对应的元素。

2. `front()` 和 `back()` 返回的是引用
这两个方法返回的是对应元素的引用,而非副本。这意味着你可以借助返回的引用对 `std::vector` 里的元素进行修改。

下面是示例代码:
cpp #include <iostream> #include <vector> int main() { std::vector<int> numbers = {1, 2, 3, 4, 5}; // 使用 front() 获取第一个元素的引用 int& first = numbers.front(); // 使用 back() 获取最后一个元素的引用 int& last = numbers.back(); // 修改第一个元素 first = 10; // 修改最后一个元素 last = 50; // 输出修改后的 vector for (int num : numbers) { std::cout << num << " "; } std::cout << std::endl; return 0; }
在上述代码中,`first` 和 `last` 分别是 `numbers` 中第一个和最后一个元素的引用,通过修改 `first` 和 `last` 的值,就能直接改变 `numbers` 里对应元素的值。运行代码后,输出结果为:
10 2 3 4 50
这就表明 `front()` 和 `back()` 返回的是引用,而非副本,并且这两个方法不会删除元素。
堆内存
多线程
strdup
初始化器
冒泡排序
增删改查
BufferedReader
输入输出
面向对象
生命周期
闭包的概念
原型链
Flask
mysql-connector-python
单例模式
浅拷贝
隔离级别
索引
InnoDB
左连接
聚合函数
PuTTY
TRUNCATE
str_starts_with_many
DateTime
array_combine
闭包的概念