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)是一種敏捷軟體開發的方法,兩個程序員在一個計算機上共同工作。一個人輸入代碼,而另一個人審查他輸入的每一行代碼。輸入代碼的人稱作駕駛員,審查代碼的人稱作觀察員(或導航員)。兩個程序員經常互換角色。
在結對編程中,觀察員同時考慮工作的戰略性方向,提出改進的意見,或將來可能出現的問題以便處理。這樣使得駕駛者可以集中全部注意力在完成當前任務的「戰術」方面。觀察員當作安全網和指南。結對編程對開發程序有很多好處。比如增加紀律性,寫出更好的代碼等。
結對編程是極端編程的組成部分。