首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

对照msdn函数原型,实现函数功能之transform(教你怎么查文档)

2012-08-14 
对照msdn函数原型,实现函数功能之transform(教你如何查文档)可能有很大部分人只能看着书本编程,万一书没在

对照msdn函数原型,实现函数功能之transform(教你如何查文档)

可能有很大部分人只能看着书本编程,万一书没在身边呢,所以要学会怎么使用MSDN,虽然里面解释大多是英文,只要理解了其中的参数,就迎刃而解了。

这里是直接从MSDN复制过来的,以transform为例:

transform
template<class InIt, class OutIt, class Unop>    OutIt transform(InIt first, InIt last, OutIt x, Unop uop);template<class InIt1, class InIt2, class OutIt, class Binop>    OutIt transform(InIt1 first1, InIt1 last1, InIt2 first2,        OutIt x, Binop bop);

The first template function evaluates *(x + N) = uop(*(first + N)) once for eachN in the range[0, last - first). It then returnsx + (last - first).The call uop(*(first + N)) must not alter*(first + N).

The second template function evaluates *(x + N) = bop(*(first1 + N), *(first2 + N)) once for eachN in the range[0, last1 - first1). It then returnsx + (last1 - first1).The call bop(*(first1 + N), *(first2 + N)) must not alter either*(first1 + N) or*(first2 + N).

 

1首先我们看到两个模板函数,关于这两个模板函数的解释,下面都有英文解释,英文不太懂的,用在线翻译或其他翻译工具。其实,也不用十分懂,关键单词知道意思就行了。

2解释下参数的意思:

InIt表示输入参数  OutIt表示输出参数,Unop表示一元函数,Binop表示二元函数

InIt一般用数组或指针又或者是迭代器,OutIt用来装载结果的迭代器(或数组,指针)首址。

3第一个函数跟第二个函数最大的不同是,参数不同,The calluop(*(first + N)) must not alter*(first + N).不允许改变first迭代器所指容器的值。The callbop(*(first1 + N), *(first2 + N)) must not alter either*(first1 + N) or*(first2 + N).不允许改变first1和first2迭代器所指容器的值。所以,第一函数的值只能有first2迭代器所指的容器去接收值,而第二个函数只能用第三方迭代器所指的容器去接收值。

4看具体代码:

第一个函数的代码:

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int chenger(int a){
 return 2*a; 
}
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10};
 vector<int>v(a,a+10);
 vector<int>vv(10);
 transform(v.begin(),v.end(),vv.begin(),chenger);
 for(vector<int>::iterator iter=vv.begin();iter!=vv.end();++iter){
  cout<<*iter<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}

对照msdn函数原型,实现函数功能之transform(教你怎么查文档)

 

第二函数的代码:

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;

int gaibian(int a,int b){
 return a+b;
}
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10};
 int b[]={100,200,300,400,500,600,700,800,900,1000};
 vector<int>v(a,a+10);
 vector<int>vv(b,b+10);
 vector<int>vvv(10);
 transform(v.begin(),v.end(),vv.begin(),vvv.begin(),gaibian);
 for(vector<int>::iterator iter=vvv.begin();iter!=vvv.end();++iter){
  cout<<*iter<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}

 

对照msdn函数原型,实现函数功能之transform(教你怎么查文档)

赶快去试试别的函数吧,MSDN2001 OTC百度可以下载。

热点排行