練習11.12
編寫程式,讀入string和int的序列,將每個string和int存入乙個pair中,pair儲存在乙個vector中。
解答:
#include #include #include #include #include using namespace std;
int main();
auto sfirst = begin(words);
auto slast = end(words);
auto nfirst = begin(nums);
auto nlast = end(nums);
auto nit = nfirst;
auto sit = sfirst;
for (; nit != nlast && sit !=slast ; ++sit, ++nit)
for (auto i : vec)
return 0;
}
練習11.13
在上一題的程式中,至少有三種建立pair的方法。編寫此程式的三個版本,分別採用不同的方法建立pair。
解釋你認為哪種形式最易於編寫和理解,為什麼?
解答:
#include #include #include #include #include using namespace std;
#define n 3
int main();
auto sfirst = begin(words);
auto slast = end(words);
auto nfirst = begin(nums);
auto nlast = end(nums);
auto nit = nfirst;
auto sit = sfirst;
#if n == 1
for (; nit != nlast && sit !=slast ; ++sit, ++nit)
#elif n == 2
for (; nit != nlast && sit !=slast ; ++sit, ++nit);
vec.push_back(p);
}#elif n == 3
for (; nit != nlast && sit != slast; ++sit, ++nit)
#endif
for (auto i : vec)
return 0;
}
我感覺第三終易與編寫,簡單明確,不過要求對新增的元素型別比較清楚,否則容易出錯。
第一種易與理解,可以明確的知道pair中的型別是否和vec中的元素一致。
練習11.14
擴充套件你在11.2.1節練習(第378頁)中編寫的孩子姓到名的map,新增乙個pair的vector,儲存孩子的名和生日。
解答:
#include #include #include #include using namespace std;
int main()
for (map>>::iterator it = families.begin();
it != families.end(); ++it)
cout << endl;
} return 0;
}
**裡面沒有輸入正確性的檢查,也就是魯棒性比較低,需要按照約定好的格式進行輸入才能正確顯示。 第十一章 11 3 5節練習
練習11.27 對於什麼問題你會用count來解決?什麼時候你又會選擇find呢?解答 引用 應該使用哪個操作依賴與我們要解決什麼問題。如果我們所關心的只不過是乙個特定元素是否已在容器中,可能find是最佳的選擇。對於不允許重複關鍵字的容器,可能使用find還是count沒有什麼區別。但對於允許重複...
第十一章 11 3 6節練習
練習11.33 實現你自己版本的單詞轉換程式。解答 include include include include include using namespace std mapbuildmap ifstream map file else return trans map const string...
第十一章 11 4節練習
練習11.37 乙個無序容器與其有序容器版本相比有何優勢?有序版本有何優勢?解答 在關鍵字型別的元素沒有明顯的有序關係的情況下,無序容器是非常有用的。在某些應用中,維護元素的序代價非常高昂,此事無需容器也很有用。雖然理論上雜湊技術能獲得更好的平均效能,但在實際中想要達到很好的效果還需要進行一些效能測...