📜  for 循环反向 C++ (1)

📅  最后修改于: 2023-12-03 14:41:18.469000             🧑  作者: Mango

C++ 中的反向循环

在 C++ 中,有时候我们需要倒序遍历数组,字符串等数据结构。这时候可以使用反向循环来实现。

1. 使用 for 循环反向遍历

使用 for 循环反向遍历数组,只需要将循环变量从数组的最后一个元素开始,每次循环递减即可。

int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr)/sizeof(arr[0]);

for(int i = size-1; i >=0; i--){
    cout << arr[i] << " ";
}

// 输出: 5 4 3 2 1

同样地,我们也可以使用 for 循环反向遍历字符串。

string str = "hello";
int size = str.size();

for(int i = size-1; i >=0; i--){
    cout << str[i] << " ";
}

// 输出: o l l e h
2. 使用 STL 算法库反向遍历

除了 for 循环外,C++ STL 算法库也提供了反向遍历的函数。

2.1. reverse()

reverse() 函数可以反转一个数组或字符串。

int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr)/sizeof(arr[0]);

reverse(arr, arr+size);

for(int i = 0; i < size; i++){
    cout << arr[i] << " ";
}

// 输出: 5 4 3 2 1

同样地,我们也可以反转一个字符串。

string str = "hello";
int size = str.size();

reverse(str.begin(), str.end());

for(int i = 0; i < size; i++){
    cout << str[i] << " ";
}

// 输出: o l l e h
2.2. rbegin() 和 rend()

rbegin() 函数返回一个反向迭代器,指向容器的最后一个元素,rend() 函数返回一个反向迭代器,指向容器的第一个元素。

int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr)/sizeof(arr[0]);

for(auto it = std::rbegin(arr); it != std::rend(arr); it++){
    cout << *it << " ";
}

// 输出: 5 4 3 2 1

同样地,我们也可以使用反向迭代器遍历一个字符串。

string str = "hello";

for(auto it = str.rbegin(); it != str.rend(); it++){
    cout << *it << " ";
}

// 输出: o l l e h
总结

以上介绍了在 C++ 中如何使用 for 循环和 STL 算法库实现反向遍历。在实际应用中,根据不同的情况选择不同的方法可以提高代码的可读性和性能。