C 實驗課任務 多型 容器 演算法

2021-10-10 12:46:16 字數 3023 閱讀 9624

**如下(具體細節處的分析見**中/**/裡的部分):

#pragma once

#include

#include

#include

//【請填寫**:呼叫stl中vector容器所需要的標頭檔案】

#include

//【請填寫**:呼叫stl中sort演算法所需要的標頭檔案】

using

namespace std;

//這是我們的基類,是個抽象類,用來表示抽象意義上的動物。

// 它有個資料成員用來儲存動物的類別名稱

// 它有個虛函式成員,用來輸出該動物的叫聲,派生類要重新定義該函式,展現個性化叫聲

// 它還有個成員函式,用來獲取該動物的類別名稱

class

canimal

;virtual

void

shout()

=0; string get_class_name()

;};//這是乙個供你參考的派生類

class

ccat

:public canimal

;void

shout()

;};//【請填寫**:】

// 請你從類ccat,以公有的方式派生類cwhitecat

// 其類別名為"white cat"

// 其叫聲是"白貓喵喵"

/*仿照題目中的參考派生類寫即可*/

class

cwhitecat

:public ccat

;void

shout()

;};//【請填寫**:】

// 請你從類canimal,以公有的方式派生類cdog

// 其類別名為"dog"

// 其叫聲是"汪汪"

/*仿照題目中的參考派生類寫即可*/

class

cdog

:public canimal

;void

shout()

;};class

canimallist

/*下面的函式與上面原理相同*/

static

bool

cmp2

(canimal *c1,canimal *c2)

void

add_one

(canimal* one)

//【請填寫**:定義add_one的函式內容,實現向animals列表新增乙個指定物件】

vector>

find_one_type_animals

(string animal_class_name)

return ans;};

void

erase_one_type_animals

(string animal_class_name)}}

void

sort_animals

(bool descend =

true

)// }

// }

/*方法三:利用正規表示式(目前對這一塊還不熟練)*/

}else

// }

// }}}

//這個函式實現讓列表中的每個動物依序吼叫一聲。

void

let_them_speek()

}};

報錯 call to non-constexpr function

報錯部分的**如下:

sortbegin()

,animals.

end(

),cmp2>

;

原因: 將()錯打成了<>, 然後怎麼也找不到錯誤的原因, 網上基本沒有對這個問題的解決方法,都快自閉了,細心才是王道…

主要的思路: 只需要將有關指標的操作改為有關引用的操作即可, 即"->「改為」.";"*「改為」&",其實引用於指標的思想上是統一的,只不過兩者的操作方式有所區別, 故當然可以改用基類的引用

具體**實現如下:

//改過的地方的行末尾會有注釋標記"//"

#pragma once

#include

#include

#include

#include

using

namespace std;

class

canimal

;virtual

void

shout()

=0; string get_class_name()

;};class

ccat

:public canimal

;void

shout()

;};class

cwhitecat

:public ccat

;void

shout()

;};class

cdog

:public canimal

;void

shout()

;};class

canimallist

static

bool

cmp2

(canimal &c1,canimal &c2)

//void

add_one

(canimal & one)

// vector>

find_one_type_animals

(string animal_class_name)

return ans;};

void

erase_one_type_animals

(string animal_class_name)}}

void

sort_animals

(bool descend =

true

)else

}void

let_them_speek()

}};

演算法實驗課

ps 開玩笑的,請隨意 1.格雷碼構造問題 分治法 分治法 the sample input 4the sample output 1111 0111 0011 1011 1001 0001 0101 1101 1100 0100 0000 1000 1010 0010 0110 1110 incl...

C 實驗多型性

桂 林 理 工 大 學 實 驗 報 告 實驗名稱 多型性 日期 2019年 05 月15 日 一 實驗目的 1 掌握運算子過載的方法。2 學習使用虛函式實現動態多型性。二 實驗環境 visual c 三 實驗內容 寫出主要的內容 1 定義point類,有座標x,y兩個成員變數 對point類過載 左...

c 第14課 list容器

list介紹 1 list是乙個雙向鍊錶容器,可高效地進行插入刪除元素。2 list不可以隨機訪問元素,所以不支援at.pos 函式與操作符。it ok it 5 err 3 include list物件的預設構造 list採用採用模板類實現,物件的預設構造形式 list lstt 如 list l...