第十一章 11 2 3節練習

2021-06-24 18:04:58 字數 1704 閱讀 3761

練習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 乙個無序容器與其有序容器版本相比有何優勢?有序版本有何優勢?解答 在關鍵字型別的元素沒有明顯的有序關係的情況下,無序容器是非常有用的。在某些應用中,維護元素的序代價非常高昂,此事無需容器也很有用。雖然理論上雜湊技術能獲得更好的平均效能,但在實際中想要達到很好的效果還需要進行一些效能測...