今天做笔试题,用到库函数,发现一直不太会用,而且使用频率挺高的
写下这些记录一下
reverse是C++下的库函数,可用于翻转字符串,翻转链表等
使用需要添加头文件
#include <algorithm>
reverse()会将区间[beg,end)内的元素全部逆序;
其中
区间翻转
1.reverse(str.begin(),str.end()) 反转字符串2.reverse(vector.begin(),vector.end()) 反转向量3.reverse(a,a+strlen(a)) 反转数组
全部翻转
reverse()
该函数无返回值
一开始我用数组a去a.reverse,发现一直报错类型不匹配,应该是数组不能用这种表达方式,不仅数组不可以,链表也不行,之前的容器部分有误已修改
具体原因应该是非本类函数无法通过实例化对象去调用函数
int main()
{int a[99];for(int i = 0; i < 10; i++){cin >> a[i];}a.reverse();//错误for(int i = 0; i < 10; i++){cout << a[i];}
}
会报如下错误
同理容器函数也不行
vector<int> a;
a.reverse();//(x)
需要如下写
int main()
{vector<int> a;for(int i = 0; i < 10; i++){cin >> a[i];}reverse(a.begin(), a.end());for(int i = 0; i < 10; i++){cout << a[i];}
}
给出函数原型
template <class BidirectionalIterator>
void reverse (BidirectionalIterator first, BidirectionalIterator last)
{while ((first!=last)&&(first!=--last)){std::iter_swap (first,last);++first;}
}