vector 逆序输出
时间: 2025-07-19 07:14:03 浏览: 10
在 C++ 中,可以通过多种方式将 `vector` 容器中的元素逆序输出。以下是几种常见的实现方法:
### 1. 使用反向迭代器 `rbegin()` 和 `rend()`
`vector` 提供了反向迭代器 `rbegin()` 和 `rend()`,可以直接用于从尾部到头部遍历容器中的元素。
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
std::cout << "使用反向迭代器逆序输出 vector 元素:" << std::endl;
for (auto it = numbers.rbegin(); it != numbers.rend(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
```
### 2. 使用 `reverse()` 函数
`std::reverse()` 函数可以反转 `vector` 的内容,之后按正常顺序遍历即可输出逆序的结果。
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 包含 std::reverse
int main() {
std::vector<int> numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
std::reverse(numbers.begin(), numbers.end());
std::cout << "使用 reverse() 函数逆序输出 vector 元素:" << std::endl;
for (const auto& num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
### 3. 使用普通迭代器手动逆序遍历
可以使用普通迭代器从尾部开始向前遍历,通过 `end()` 和 `begin()` 获取起始和结束位置。
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
std::cout << "使用普通迭代器手动逆序输出 vector 元素:" << std::endl;
for (auto it = numbers.end(); it != numbers.begin();) {
std::cout << *(--it) << " ";
}
std::cout << std::endl;
return 0;
}
```
### 4. 使用递归方法
通过递归调用函数,可以实现从尾部到头部逐个输出元素。
```cpp
#include <iostream>
#include <vector>
void vprintf(std::vector<int>& ivec) {
static auto sz = ivec.size();
if (sz != 0) {
std::cout << ivec[--sz] << " ";
vprintf(ivec);
}
}
int main() {
std::vector<int> numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
std::cout << "使用递归方法逆序输出 vector 元素:" << std::endl;
vprintf(numbers);
std::cout << std::endl;
return 0;
}
```
### 5. 使用 `crbegin()` 和 `crend()` 的只读反向迭代器
如果不需要修改元素,可以使用只读反向迭代器 `crbegin()` 和 `crend()`。
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
std::cout << "使用 crbegin() 和 crend() 逆序输出 vector 元素:" << std::endl;
for (auto it = numbers.crbegin(); it != numbers.crend(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
```
### 6. 使用 `for_each()` 和 Lambda 表达式
可以结合 `std::for_each()` 算法和 Lambda 表达式实现逆序输出。
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 包含 std::for_each
int main() {
std::vector<int> numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
std::cout << "使用 for_each 和 Lambda 表达式逆序输出 vector 元素:" << std::endl;
std::for_each(numbers.crbegin(), numbers.crend(), [](const int& i) {
std::cout << i << " ";
});
std::cout << std::endl;
return 0;
}
```
以上方法均能实现 `vector` 容器中元素的逆序输出,具体选择哪种方法取决于实际需求和代码风格。
阅读全文
相关推荐




















