[問題] 關於使用範本templete的小問題

看板C_and_CPP作者 (ㄚ冰)時間7年前 (2018/07/28 15:08), 7年前編輯推噓1(108)
留言9則, 2人參與, 7年前最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) vc++ 問題(Question): 我今天有兩種資料群AB要分別依照他們的priority用heap做排班 兩種資料用struct大概這樣 struct A ( (typeA1 data1) , ... , (int p) ) struct B ( (typeB1 data1) , ... , (int p) ) (除了各自都有權重其他資料型態都不盡相同 我想說做一個heap的範本方便處理這兩種資料群的排班,如下: template <class type> class max_heap{...} private中有陣列作為heap,如: type data[heap_size] 那像是insert大致會像是下面這樣: template <class type> void max_heap<type>::insert(type _data){ data[current_size+1]=_data; current_size++; ... ... 然後根據"data[current_size].p"去做heap調整 } 把 範本預設的資料型態 預想成 含整數p的struct 然後操作,原本以為會出問題的 不過編譯執行好像都可以,然後查了一下別人用template的一些例子 都是放很單純的int...之類的,沒看過把struct定義的放進去用 我想問的只是這是個好方法嗎? 還是通常都是針對各種資料去建立各自的heap class -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.160.103.145 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1532761683.A.9ED.html

07/28 16:12, 7年前 , 1F
有不同struct這樣寫沒錯 C++有heap的演算法
07/28 16:12, 1F

07/28 16:12, 7年前 , 2F
應該可以跟vector一起用 不用自己寫heap的實作
07/28 16:12, 2F

07/28 16:14, 7年前 , 3F
只要你的struct可以比較大小就可以用了
07/28 16:14, 3F

07/28 19:59, 7年前 , 4F
C++ 的 template 滿常這樣假設 template class 型別具有
07/28 19:59, 4F

07/28 19:59, 7年前 , 5F
某些特定的欄位或 typedef 或等等
07/28 19:59, 5F

07/28 20:00, 7年前 , 6F
由於實際程式都是在(以各種方法)給定所有型別之後才會編譯
07/28 20:00, 6F

07/28 20:01, 7年前 , 7F
因此只要給定之後程式合法那就沒問題了
07/28 20:01, 7F

07/28 20:02, 7年前 , 8F
相對的如果沒有 (例如此例中結構中不含 p 但卻 .p 存取)
07/28 20:02, 8F

07/28 20:02, 7年前 , 9F
那就會出現普通的編譯錯誤
07/28 20:02, 9F
我其實也不是只要用heap 我是想把問題簡化到呈現我要重點而已啦XD 有把疑惑簡單表達出來就好了 我也大概懂了 謝謝^^ ※ 編輯: TMDTMD2487 (118.160.103.145), 07/28/2018 21:33:51
文章代碼(AID): #1RN1PJdj (C_and_CPP)