久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

<i id='Qykfw'><tr id='Qykfw'><dt id='Qykfw'><q id='Qykfw'><span id='Qykfw'><b id='Qykfw'><form id='Qykfw'><ins id='Qykfw'></ins><ul id='Qykfw'></ul><sub id='Qykfw'></sub></form><legend id='Qykfw'></legend><bdo id='Qykfw'><pre id='Qykfw'><center id='Qykfw'></center></pre></bdo></b><th id='Qykfw'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='Qykfw'><tfoot id='Qykfw'></tfoot><dl id='Qykfw'><fieldset id='Qykfw'></fieldset></dl></div>

<small id='Qykfw'></small><noframes id='Qykfw'>

      • <bdo id='Qykfw'></bdo><ul id='Qykfw'></ul>

        <tfoot id='Qykfw'></tfoot>
      1. <legend id='Qykfw'><style id='Qykfw'><dir id='Qykfw'><q id='Qykfw'></q></dir></style></legend>

        c++ 模板類;具有任意容器類型的函數,如何定義

        c++ template class; function with arbitrary container type, how to define it?(c++ 模板類;具有任意容器類型的函數,如何定義它?)

          <small id='UQcvy'></small><noframes id='UQcvy'>

          1. <tfoot id='UQcvy'></tfoot>
              <tbody id='UQcvy'></tbody>
            • <bdo id='UQcvy'></bdo><ul id='UQcvy'></ul>
              <i id='UQcvy'><tr id='UQcvy'><dt id='UQcvy'><q id='UQcvy'><span id='UQcvy'><b id='UQcvy'><form id='UQcvy'><ins id='UQcvy'></ins><ul id='UQcvy'></ul><sub id='UQcvy'></sub></form><legend id='UQcvy'></legend><bdo id='UQcvy'><pre id='UQcvy'><center id='UQcvy'></center></pre></bdo></b><th id='UQcvy'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='UQcvy'><tfoot id='UQcvy'></tfoot><dl id='UQcvy'><fieldset id='UQcvy'></fieldset></dl></div>
                • <legend id='UQcvy'><style id='UQcvy'><dir id='UQcvy'><q id='UQcvy'></q></dir></style></legend>

                • 本文介紹了c++ 模板類;具有任意容器類型的函數,如何定義它?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  限時送ChatGPT賬號..

                  好的,簡單的模板問題.假設我像這樣定義我的模板類:

                  template類 foo {上市:foo(T const& first, T const& second) : first(first), second(second) {}模板void bar(C& 容器,T const& baz){//...}私人的:第一;T秒;}

                  問題是關于我的 bar 函數...我需要它能夠使用某種標準容器,這就是為什么我包含模板/類型名稱 C 部分來定義該容器類型.但顯然這不是正確的方法,因為我的測試班然后抱怨:

                  錯誤:'bar' 未在此范圍內聲明

                  那么我將如何以正確的方式實現我的欄功能?也就是說,作為我的模板類的一個函數,具有任意容器類型......我的模板類的其余部分工作正常(具有不會導致錯誤的其他函數),這只是一個有問題的函數.

                  好的,所以特定函數(bar)是一個 eraseInRange 函數,它擦除指定范圍內的所有元素:

                  void eraseInRange(C& container, T const& firstElement, T const& secondElement) {...}

                  一個如何使用它的例子是:

                  eraseInRange(v, 7, 19);

                  在這種情況下,v 是一個向量.

                  編輯 2:傻我!我應該在我的班級之外聲明這個函數,而不是在里面……這是一個非常令人沮喪的錯誤.無論如何,感謝大家的幫助,雖然問題有點不同,但這些信息確實幫助我構建了函數,因為在找到我原來的問題后,我確實遇到了其他一些令人愉快的錯誤.所以謝謝你!

                  解決方案


                  特征解決方案.

                  概括不要超過需要,不要少于.

                  在某些情況下,該解決方案可能還不夠,因為它會匹配具有此類簽名的任何模板(例如 shared_ptr),在這種情況下,您可以使用 type_traits,非常像 duck-typing(模板通常是鴨式的).

                  #include //Helper 判斷是否有一個用于 T 的 const_iterator.模板結構 has_const_iterator{私人的:模板靜態字符測試(類型名 C::const_iterator*);模板靜態整數測試(...);上市:枚舉 { value = sizeof(test(0)) == sizeof(char) };};//bar() 是為也定義了 const_iterator 的容器定義的//作為 value_type.模板 typename std::enable_if::value,無效>::類型bar(const Container &c, typename Container::value_type const & t){//注意:不需要對 value_type 進行額外檢查,檢查是為了//已經在函數簽名中釋放了.}模板 類DoesNotHaveConstIterator {};#include <向量>int主(){std::vectorC;酒吧 (c, 1.2f);DoesNotHaveConstIterator乙;酒吧 (b, 1.2f);//正確編譯失敗}

                  一個好的模板通常不會人為地限制它們有效的類型(為什么要?).但是想象一下,在上面的示例中,您需要訪問對象 const_iterator,然后您可以使用 SFINAE 和 type_traits 將這些約束放在您的函數上.


                  或者只是像標準庫那樣

                  概括不要超過需要,不要少于.

                  template void bar (Iter it, Iter end) {for (; it!=end; ++it) {/*...*
                                  
                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  Why do two functions have the same address?(為什么兩個函數的地址相同?)
                  Why the initializer of std::function has to be CopyConstructible?(為什么 std::function 的初始化程序必須是可復制構造的?)
                  mixing templates with polymorphism(混合模板與多態性)
                  When should I use the keyword quot;typenamequot; when using templates(我什么時候應該使用關鍵字“typename?使用模板時)
                  Dependent name resolution amp; namespace std / Standard Library(依賴名稱解析命名空間 std/標準庫)
                  gcc can compile a variadic template while clang cannot(gcc 可以編譯可變參數模板,而 clang 不能)

                  • <small id='LWxkP'></small><noframes id='LWxkP'>

                        <bdo id='LWxkP'></bdo><ul id='LWxkP'></ul>
                        <tfoot id='LWxkP'></tfoot>
                      • <legend id='LWxkP'><style id='LWxkP'><dir id='LWxkP'><q id='LWxkP'></q></dir></style></legend>

                          <i id='LWxkP'><tr id='LWxkP'><dt id='LWxkP'><q id='LWxkP'><span id='LWxkP'><b id='LWxkP'><form id='LWxkP'><ins id='LWxkP'></ins><ul id='LWxkP'></ul><sub id='LWxkP'></sub></form><legend id='LWxkP'></legend><bdo id='LWxkP'><pre id='LWxkP'><center id='LWxkP'></center></pre></bdo></b><th id='LWxkP'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='LWxkP'><tfoot id='LWxkP'></tfoot><dl id='LWxkP'><fieldset id='LWxkP'></fieldset></dl></div>
                              <tbody id='LWxkP'></tbody>
                            主站蜘蛛池模板: 国产精品日日做人人爱 | 99久久精品国产一区二区三区 | 欧美精品日韩精品国产精品 | 奇米av| 免费午夜电影 | 黄色av网站免费看 | 操操操av| 日日躁狠狠躁aaaaxxxx | 精品久久电影 | 日本激情视频中文字幕 | 91精品中文字幕一区二区三区 | 综合自拍| aaaaaaa片毛片免费观看 | 特a毛片| 久久久青草婷婷精品综合日韩 | 国产免费av在线 | 伊人久久综合 | 成人欧美一区二区三区黑人孕妇 | 成人三级av | 美女视频网站久久 | 精品国产欧美一区二区三区不卡 | 国产精品久久久久久久久久免费看 | 久久成人免费 | 日韩视频一区二区 | 99视频在线免费观看 | 免费的色网站 | 午夜精品在线观看 | 精品国产乱码久久久久久88av | 亚洲成人精品 | 色中文在线 | 龙珠z在线观看 | 97国产精品视频人人做人人爱 | 大久 | 一区二区三区免费在线观看 | 91av在线免费 | 91 久久| 国产精品欧美一区二区三区不卡 | 97视频精品 | 久久久久久久久国产 | 亚洲v日韩v综合v精品v | 亚洲精品小视频在线观看 |