pair编程
❶ 什么是pair programming
结对编程技术是一个非常简单和直观的概念:两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计。
1995年,Larry Constantine在他的专栏中第一次提到了在他在P. J. Plaugherís software company, Whitesmiths, Ltd观察到一个现象:Collaborative Programming(合作编程)。
1996年,Kent Beck,Ward Cunningham 和Ron Jeffries一起提出了Extreme Programming(XP),其中吸收了Collaborative Programming,并称为Pair Programming。
同一个算法、同一段代码或同一组测试、与两位程序员各自独立工作相比.结对编程往往只需花费大约一半的时间就能编写出质量更高的代码, 但是,人与人之间的合作不是一件简单的事情——尤其当人们都早己习惯了独自工作的时候、实施结对编程技术将给软件项目的开发工作带来好处.只是这些好处必须经过缜密的思考和计划才能真正体现出来。
❷ C++编程,从一个文件中统计所有出现过的单词,并按次数从大到小输出
问题可以分为2个部分:
统计出现过的所有单词
按次数从大到小输出
#include<iostream>
#include<fstream>
#include<unordered_map>
#include<algorithm>
#include<string>
usingnamespacestd;
boolmysort(pair<int,string>a,pair<int,string>b){
if(a.first!=b.first)
returna.first>b.first;
else
returna.second<b.second;
}
intmain(){
//统计出现过的所有单词:
ifstreamifs("input.in",ifstream::in);
unordered_map<string,int>um;
strings;
while(ifs>>s){
if(um.find(s)==um.end())um[s]=1;
else++um[s];
}
ifs.close();
//排序(以出现次数大到小为最优先排位方式,如果出现次数一致,则以辞典编纂从小到大的顺序排位:
vector<pair<int,string>>v;
for(unordered_map<string,int>::iteratorit=um.begin();it!=um.end();++it)
v.push_back(make_pair(it->second,it->first));
sort(v.begin(),v.end(),mysort);
//输出:
for(inti=0;i<v.size();++i)
puts(v[i].second.c_str());
}
几点小贴士:
如果只输出字符串的话puts是最快的内部函数(比printf快大概10倍,而printf又比cout要快),不过要记得puts只能输出c字符串,所以要输出string的时候记得用 .c_str() 函数。
unordered_map 比 map要快上很多,因为它使用哈希表(调用的时间是O(1),map调用时间是O(nlogn)),但是代价就是它不是按顺序储存的。
❸ 什么是结对编程
结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。
在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。这样使得驾驶者可以集中全部注意力在完成当前任务的“战术”方面。观察员当作安全网和指南。结对编程对开发程序有很多好处。比如增加纪律性,写出更好的代码等。
结对编程是极端编程的组成部分。