📅  最后修改于: 2023-12-03 14:41:18.469000             🧑  作者: Mango
在 C++ 中,有时候我们需要倒序遍历数组,字符串等数据结构。这时候可以使用反向循环来实现。
使用 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
除了 for 循环外,C++ STL 算法库也提供了反向遍历的函数。
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
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 算法库实现反向遍历。在实际应用中,根据不同的情况选择不同的方法可以提高代码的可读性和性能。