transform函数的应用

作用

transform函数的作用是:将某操作应用于指定范围的每个元素。transform函数有两个重载版本:
transform(first,last,result,op);
//first是容器的首迭代器,last为容器的末迭代器,result为存放结果的容器,op为要进行操作的一元函数对象或sturct、class。

transform(first1,last1,first2,result,binary_op);
//first1是第一个容器的首迭代器,last1为第一个容器的末迭代器,first2为第二个容器的首迭代器,result为存放结果的容器,binary_op为要进行操作的二元函数对象或sturct、class。
//二元操作先不管

注意:第二个重载版本必须要保证两个容器的元素个数相等才行,否则会抛出异常。

看一个例子:利用transform函数将一个给定的字符串中的小写字母改写成大写字母,并将结果保存在一个叫second的数组里,原字符串内容不变。
我们只需要使用transform的第一个重载函数,当然我们也可以使用for_each函数来完成再copy几次就行了,现在来看一下代码:

#include <iostream>
#include <algorithm>
using namespace std;
char op(char ch)
{
    if(ch>='A'&&ch<='Z')
        return ch+32;
    else
        return ch;
}
int main()
{
    string first,second;
    cin>>first;
    second.resize(first.size());
    transform(first.begin(),first.end(),second.begin(),op);
    cout<<second<<endl;
    return 0;
}
#include <bits/stdc++.h>
using namespace std;

int main() {
	// your code goes here
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	string str;
	cin>>str;
	int n = str.length(), x = 0;
	for(int i = 0;i<n;i++)
	    if(isupper(str[i]))
	        ++x;
	if(x > n/2)
	    transform(str.begin(), str.end(), str.begin(), ::toupper);
	else
	    transform(str.begin(), str.end(), str.begin(), ::tolower);
	cout<<str;    
	return 0;
}

tolower和toupper是大小写的转换。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐