c primer第16章課後習題答案

2021-09-09 07:54:18 字數 1587 閱讀 1896

1. 練習16.1

當我們呼叫template時,編譯器會根據函式實參的型別推斷模板實參,從而確定最匹配的繫結到模板引數t的 型別,之後編譯器用推斷出得模板引數來例項化乙個特定函式的版本,這個過程就叫做例項化。

2. 練習16.2

模板函式在.**件中定義

#ifndef template_compare_h

#define template_compare_h

templateint compare(const t &v1,const t &v2)

#endif template_compare_h

main函式裡呼叫

cout<<"result1 "<3. 練習16.3

main函式裡執行下述**,其中animal類是空類。

animal a,b;

cout<<"result3 "4. 練習16.4

template.h

#ifndef template_find_h

#define template_find_h

#include #include template bool tfind(const u &it1,const u &it2,const t &t)

return false;

}#endif template_find_h

main.cpp

//因為我用的是vs2010,還不支援c++11的容器直接初始化列表,所以用這種方法初始化

int a[5] = ;

vectorvec1(a,a+5);

string b[3] = ;

vectorvec2(b,b+3);

bool res1 = tfind(vec1.cbegin(),vec1.cend(),4);

cout<5. 練習16.5

template void print(const t &vec,size_t n)

template const t* tend(const t (&vec)[n])

template size_t tsize(const t (&vec)[n])

main.cpp

int a[5] = ;

cout<7. 練習16.8

並非所有的容器都定義了operate <,但c++標準庫的所有容器都定義了operate ==和!=。

1.練習16.9

類模版:用來生成類的藍圖,與函式模版不同的是,編譯器不能為類模版推斷模版引數型別,所以在實參列表中,類模版需要做的更多,類模版就是生成類的例項,函式模版就是用來生成函式的例項。

2.練習16.10

編譯器會重寫類模板,將模板引數t的每個例項替換為給定的模板實參(顯式)。

3.練習16.11

在list類內,使用模版名不需要再加引數列表,而listitem使用時必須加上<>模版引數列表

4.練習16.12

第7章 課後習題

函式模板 另一種是 類模板 是定義模板的關鍵字。或者typename 開始。或者函式引數的型別 個數不相同所進行的類似 操作。普通傳值引數的型別轉換機制。和關聯容器 三 選擇題 至少選乙個,可以多選 五 程式設計題 include include using namespace std templa...

第9章 課後習題

二 選擇題 至少選乙個,可以多選 1 處理異常用到3個保留字,除了try外,還有 ac a.catch b.class c.throw d.return 2 catch.般放在其他catch子句的後面,該子句的作用是 b a.拋擲異常 b.捕獲所有型別的異常 c.檢測並處理異常 d.有語法錯誤 3 ...

第4章 課後習題

4.1 105 4.2 a vec.begin vec.begin b vec.begin 1 vec.begin 1 4.3 我覺得可以接受 個人看法並非標準答案,僅作參考 這種缺陷只會求值順序對表示式的最後結果有影響的時候出現,而如果求值順序如果對最後結果有影響 那麼避免這種缺陷本身就是程式設計...