精品视频在线免费看,99久久精品国产麻豆婷婷,国产V在线在线观看视频免费,女同另类国产精品视频,亚洲一区二区视频在线观看,最新精品露脸国产在线,日本中文有码视频在线,在线观看国产久青草
    收藏萬通
    登錄
    免費注冊
    移動網站
    Hi,歡迎來到,萬通商務網
    消息
    管理中心
    網站導航

    分配器

    在C++編程中,分配器(英語:allocator)是C++標準庫的重要組成部分。C++的庫中定義了多種被統稱為"容器"的數據結構(如鏈表、集合等),這些容器的共同特征之一,即是其大小可以在程序的運行時改變;為了實現這一點,進行動態內存分配就顯得尤為必要,在此分配器就用于處理容器對內存的分配與釋放請求。換句話說,于分配器用封裝STL容器在內存管理上的低層細節。默認情況下,C++標準庫使用其自帶的通用分配器,但根據具體需要,程序員也可自行定制分配器以替代之。
    分配器
    簡介
    分配器最早由亞歷山大·斯特潘諾夫作為C++標準模板庫(Standard Template Library,簡稱STL)的一部分發明,其初衷是創造一種能"使庫更加靈活,并能獨立于底層數據模型的方法",并允許程序員在庫中利用自定義的指針和引用類型;但在將標準模板庫納入C++標準時,C++標準委員會意識到對數據模型的完全抽象化處理會帶來不可接受的性能損耗,為作折中,標準中對分配器的限制變得更加嚴格,而有鑒于此,與斯特潘諾夫原先的設想相比,現有標準所描述的分配器可定制程度已大大受限。

    雖然分配器的定制有所限制,但在許多情況下,仍需要用到自定義的分配器,而這一般是為封裝對不同類型內存空間(如共享內存與已回收內存)的訪問方式,或在使用內存池進行內存分配時提高性能而為。除此以外,從內存占用和運行時間的角度看,在頻繁進行少量內存分配的程序中,若引入為之專門定制的分配器,也會獲益良多。

    功能
    有線電視網的頻率不斷提升,功能不斷加強,因此對分配器的要求不斷提高。

    在接口設備上分配器是將音視頻信號分配至多個顯示設備或投影顯示系統上的一種控制設備。它是專門分配信號的接口形式的設備。分配器具有一個顯著的特點就是,可以將高清AV信號通過普通的同軸電纜線延長到200米左右,能徹底解決工程中因信號信號源1個而顯示設備有多個種類與數量而造成的問題。

    用戶使用時先將信號通過一根標配的高質量線引接到分配器的INPUT上,分配器上有兩個或者四個甚至多個輸出口,其中可以接到本地顯示器上,其他的可以接到遠端的顯示設備上,通過調節分配器上的亮度和對比度,就可以把遠端顯示設備的圖像清晰度調整到與本地一樣的效果。通過調整后,遠端顯示設備的圖像質量會有質的提高,分配器可以最大程度的消除脫尾和重影現象,完全可以滿足目前我國各種重點工程對高品質圖像質量的要求。

    背景
    亞歷山大·斯特潘諾夫與李夢(Meng Lee)在1994年將標準模板庫草案提交給C++標準委員會。提交伊始,草案就得到了委員會的初步支持,但委員會成員也對此提出了一些意見,尤其是要求斯特潘諾夫定制庫內的容器,使之與底層存儲模型相獨立。作為對要求的回應,斯特潘諾夫發明了分配器,而正因此,標準模板庫的所有容器接口也被迫重寫,以與分配器相兼容。在修改標準模板庫以將之引入C++標準庫的過程中,許多標準委員會成員(如安德魯·克尼格與比雅尼·斯特勞斯特魯普)也與斯特潘諾夫協同工作。他們亦發現自定義分配器甚至有應用于長生命周期(持續存儲)的標準模板庫容器的潛力,斯特潘諾夫對此的評論則是"重要而有趣的見解"。

    在原有的提案里的分配器設定中,斯特潘諾夫雜糅了一些語言特性(如可將模板參數也定義為模板),但由于當時的編譯器皆無法處理之,所以最終并未被標準委員會所接納,斯特潘諾夫則如此描述當時的情形:"比雅尼·斯特勞斯特魯普與安迪·克尼格需要花大量時間來檢查我們是否正確使用了這些未實現的特性。"在分配器應用后,之前庫中直接使用的指針與引用類型也可以分配器所定義的類型替代,斯特潘諾夫亦曾如此描述分配器:"標準模板庫有個不錯的特性便是:唯一要提及機器相關類型的地方……只需被封裝成(僅)約16行內的代碼。"除此以外,斯特潘諾夫原本還打算在分配器中完全封裝存儲模型,但標準委員會意識到這一做法會造成無法接受的性能損失,因而為補償之,分配器的使用需求也做了一定擴充。

    分配器的應用中比較特別的一點是,容器的實現過程中可能會假定分配器對指針與相關整型的類型定義與默認分配器所提供的等價,因而給定分配器類型的所有實例在比較時常會得出"相等"的結果,而這一效果實際上恰與設計分配器的初衷背道而馳,并使帶狀態分配器的可用性大大受限,斯特潘諾夫后來對此評論道:"(分配器)理論上說是不差的主意……但不幸的是在實踐中無法發揮其功效。 "他洞察到若要令分配器更加實用,就有必要針對核心語言的引用部分進行修改。

    技術指標
    1、頻率范圍:分配器使用在整個有線電視網中,因此應具有寬帶的頻率特性;

    輸入輸出阻抗:有線電視網中的射頻各種接口阻抗均應為75歐,以實現阻抗匹配,因此分配器輸入端及輸出端阻抗均應為75歐;

    2、分配損失:在系統中總希望接入分配器損耗越小越好。分配損失Ls的多少和分配路數n的多少有關,在理想情況下Ls=10lgn,當n=2時為二分配器分配損失為3dB。實際上除了等分信號的損失外,還有一部分是由于分配器件本身有衰減,所以總比計算值要大。如在550-750MHz時二分配器分配損失工程上常取值3.5dB,4分配器損失常取值8dB;

    3、相互隔離:相互隔離亦稱分配隔離。如果在分配器的某一個輸出端加入一個信號,該信號電平與其它輸出端該信號電平之差即是相互隔離,一般要求分配器輸出端隔離度大于20dB以上。如果駐波比太大,則傳輸信號就會在分配器的輸入端或者輸出端產生反射,對圖像質量產生不良影響,如重影等。 分配器在工程中還分為過電型分配器、戶外型分配器、戶內分配器等。

    4、駐波比:全稱為電壓駐波比,又名VSWR和SWR,為英文Voltage Standing Wave Ratio的簡寫。

    駐波比就是一個數值,用來表示天線和電波發射臺是否匹配。如果 SWR 的值等于1, 則表示發射傳輸給天線的電波沒有任何反射,全部發射出去,這是最理想的情況。如果SWR 值大于1, 則表示有一部分電波被反射回來,最終變成熱量,使得饋線升溫。被反射的電波在發射臺輸出口也可產生相當高的電壓,有可能損壞發射臺。

    5、反射損耗 是指負載直接接在信號源上所得到的功率和由于分配器匹配不好引起的反射功率之比 用dB表示

    6、射頻特性

    產品分類
    1、A型分配器、G型分配器、M型分配器、F型分配器叫做板式分配器,其中A型90%用于國內。

    2、D型分配器、S型分配器、U型分配器叫做井式分配器,其中S型分配90%用于國內。

    美洲和歐洲產品的區別:美標的帶安全閥,但是歐標的沒有。

    詳細說明
    1、部件:小桶連接器(板式,井式分配器)、啤酒龍頭,啤酒塔,酒矛,啤酒扎啤機,酒標。

    2、本產品與啤酒扎啤機、啤酒龍頭,啤酒塔,酒矛,制冷機,酒標配套使用,通過小桶連接器和酒矛的作用將啤酒送入啤酒扎啤機,經扎啤機制冷,混合閥閥門打開。打開二氧化碳壓力表,使二氧化碳壓入酒桶,啤酒從出酒龍頭放出。產品設計精湛,擺設大方,文明衛生,使用方便,隨時飲用。是酒吧,賓館,餐廳,客廳等需喝扎啤的理想用品。

    3、設計精湛,擺設大方,文明衛生,使用方便,隨時飲用。

    使用需求
    任意滿足分配器使用需求的C++類都可作分配器使用。具體來說,當一個類(在此設為類A)有為一個特定類型(在此設為類型T)的對象分配內存的能力時,該類就必須提供以下類型:A::pointer(指針),A::const_pointer(常量指針), A::reference(引用),A::const_reference(常量引用)及A::value_type(值類型),如此才能以通用的方式聲明對象與對該類對象的引用T。allocator提供這些指針或引用的類型定義的初衷,是隱蔽指針或引用的物理實現細節;因為在16位編程時代,遠指針(far pointer)是與普通指針非常不同的,allocator可以定義一些結構來表示這些指針或引用,而容器類用戶不需要了解其是如何實現的。同時類A還需提供類型A::size_type(表示所用內存大小的類型)與A::difference_type(指針差值的類型),其中size_type類型是用于表示類A所定義的分配模型中的單個對象最大尺寸的無符號整型,而difference_type類型是帶符號整型,用于表示分配模型內的兩個指針的差異值。

    雖然按照標準,在庫的實現過程中允許假定分配器(類)A的A::pointer(指針)與A::const_pointer(常量指針)即是對T*與T const*的簡單的類型定義,但一般更鼓勵支持通用分配器。

    另外,設有對于為某一對象類型T所設定的分配器A,則A必須包含四項成員函數,分別為分配函數、解除分配函數、最大個數函數和地址函數。

    分配函數用以進行內存分配,形如A::pointer A::allocate(size_type n, A::const_pointer hint = 0)。其中調用參數n即為需要分配的對象個數,另一調用參數hint(須為指向已為A所分配的某一對象的指針)則為可選參數,可用于在分配過程中指定新數組所在的內存地址,以提高引用局部性,但在實際的分配過程中程序也可以根據情況自動忽略掉該參數。該函數調用時會返回指向分配所得的新數組的第一個元素的指針,而這一數組的大小足以容納n個T類元素。在此需要注意的是,調用時只為此數組分配了內存,而并未實際構造對象。

    解除分配函數形如void A::deallocate(A::pointer p, A::size_type n)。其中p為需要解除分配的對象指針(以A::allocate函數所返回的指針做參數),n為對象個數,而調用該函數時即是將以p起始的n個元素解除分配,但同時并不會析構之。C++標準明確要求在調用deallocate之前,該地址空間上的對象已經被析構。

    最大個數函數形如A::max_size(),調用時返回調用一次分配函數A::allocate所能成功分配的元素的最大個數,其返回值等價于A::size_type(-1) / sizeof(T)的結果 。

    地址函數形如A::pointer A::address ( reference x ),調用時返回一個指向x的指針。

    除此以外,由于對象的構造/析構過程與分配/解除分配過程分別進行 ,因而分配器還需要成員函數A::construct(構造函數)與A::destroy(析構函數)以對對象進行構造與析構,且兩者應等價于如下函數:

    template void A::construct(A::pointer p, A::const_reference t) { new ((void*) p) T(t); } template void A::destroy(A::pointer p){ ((T*)p)->~T(); }

    以上代碼中使用了placement new語法,且直接調用了析構函數。

    分配器應是可復制構造的,任舉一例,為T類對象而設的分配器可由另一為U類所設的分配器構造。若某分配器分配了一段存儲空間,則這段存儲空間只能由與該分配器等價的分配器解除分配。分配器還需要提供一個模板類成員函數template struct A::rebind { typedef A other; };,以模板 (C++)參數化的方式,借之來針對不同的數據類型獲取不同的分配器。例如,若給定某一為整型(int)而設的分配器IntAllocator,則可執行IntAllocator::rebind::other以獲取對應長整型(long)的相關分配器。實際上,stl::list實際要分配的是包含了雙向鏈表指針的node,而不是實際分配int類型,這是引入了rebind的初衷。

    與分配器相關聯的operator ,僅當一個allocator分配的內存可以被另一個allocator釋放時,上述相等比較算符返回真。operator !=的返回結果與之相反。

    自定義分配器
    定義自定義分配器的主要原因之一是提升性能。利用專用的自定義分配器可以提高程序的性能,又或提高內存使用效率,亦或兩者兼而有之。默認分配器使用new操作符分配存儲空間,而這常利用C語言堆分配函數(malloc())實現。由于堆分配函數常針對偶發的內存大量分配作優化,因此在為需要一次分配大量內存的容器(如矢量、雙端隊列)分配內存時,默認分配器一般效率良好。但是,對于映射表與雙向鏈表這類需要頻繁分配少量內存的容器來說,若采用默認分配器分配內存,則通常效率很低。除此之外,基于malloc()的默認分配器還存在許多問題,諸如較差的引用局部性,以及可能造成內存碎片化。

    有鑒于此,在這一情況下,人們常使用基于內存池的分配器來解決頻繁少量分配問題。與默認的"按需分配"方式不同,在使用基于內存池的分配器時,程序會預先為之分配大塊內存(即"內存池"),而后在需要分配內存時,自定義分配器只需向請求方返回一個指向池內內存的指針即可;而在對象析構時,并不需實際解除分配內存,而是延遲到內存池的生命周期完結時才真正解除分配。

    在"自定義分配器"這一話題上,已有諸多C++專家與相關作者參與探討,例如斯科特·梅耶斯的作品《Effective STL》與安德烈·亞歷山德雷斯庫的《Modern C++ Design》都有提及。梅耶斯洞察到,若要求某一分配器的所有實例等效,則可移植的分配器必須不包含狀態。雖然C++標準鼓勵庫的實現者支持帶狀態的分配器,但梅耶斯稱,相關段落是"(看似)美妙的觀點",但也幾乎是空話,并稱分配器的限制"過于嚴苛"。

    另外,在《C++程序設計語言》中,比雅尼·斯特勞斯特魯普則認為"'嚴格限制分配器,以免各對象信息不同',這點顯然問題不大"(大意),并指出大部分分配器并不需要狀態,甚至沒有狀態時性能反倒更佳。他提出了三個自定義分配器的用例:內存池型的分配器、共享內存型分配器與垃圾回收型分配器,并展示了一個分配器的實現,此間利用了一個內部內存池,以快速分配/解除分配少量內存。但他也提到,如此優化可能已經在他所提供的樣例分配器中實現。

    自定義分配器的另一用途是調試內存相關錯誤。若要做到這一點,可以編寫一個分配器,令之在分配時分配額外的內存,并借此存放調試信息。這類分配器不僅可以保證內存由同類分配器分配/解除分配內存,還可在一定程度上保護程序免受緩存溢出之害。

    使用方法

    當初始化標準容器時,若需使用自定分配器,則可將其寫入模板參數,以代替默認的std::allocator,如下所示:

    namespace std { template > class vector;// ...

    正如其他所有C++類模板般,在初始化同一標準庫容器時,若使用了不同的分配器,則所生成容器的類型亦不同。譬如,若函數需一整型矢量數組std::vector作為參數,則其只能接受由默認分配器生成的整型矢量數組。

    C++11

    通過加入"作用域"分配器,C++11標準進一步強化了分配器接口,從而保證帶有嵌套式內存分配特點的容器(如字符串矢量數組等)所分配到的內存皆來自容器自身的分配器。

    另外,C++11標準刪除了"給定類型的分配器在比較時總是相等"的模棱兩可的要求,使帶狀態分配器不僅實用性得到提升,而且可管理進程外的共享內存。現今分配器的作用多為讓程序員可以控制容器的內存分配,而非適應基底硬件的地址模型。事實上,C++11標準刪去了分配器"自適應地址模型"的功能,結果抹消了其設計初衷。

    • 帶襯墊去除器的連續式物料分配器

      產品規格:
      產品數量:
      經營模式:
      貿易型
      執照認證:
      未認證
      最近更新:
      2025/8/6 11:29:28
      經營品牌:
      概述 您的一次性識別任務既快速又簡單-使用帶襯墊去除器的brady材料分配器保持這種狀態。不要搖擺不定-加重底座和橡膠支腳在移動貼標項目中將分配器保持在適當的位置占地面積小,節省空間創新
      ¥0元/件

      所在地:廣東廣州

      廣州通馳電子科技有限公司

    • 電袋復合除塵器在電除塵器

      產品規格:
      2800*7000mm
      產品數量:
      99
      經營模式:
      生產型
      執照認證:
      已認證
      最近更新:
      2026/2/24 11:06:30
      經營品牌:
      鹽城騰飛環保
      電袋復合除塵器在電除塵器改造中的經濟性分析 騰飛環保工業用電袋復合除塵器的特點 電袋復合除塵器可
      ¥59000元/臺

      所在地:江蘇鹽城

      鹽城騰飛環保科技有限公司

    • Permco泵,Permco馬達,Permco流量分配器

      產品規格:
      產品數量:
      經營模式:
      貿易型
      執照認證:
      已認證
      最近更新:
      2026/2/24 8:50:24
      經營品牌:
      上海包勒機械設備有限公司優勢供應;permco泵,permco馬達,permco流量分配器 歡迎咨詢 permco泵: pclass=msonormalalign=lef
      ¥0元/

      所在地:上海上海

      上海包勒機械設備有限公司

    關于我們 | 聯系我們 | 合作代理 | 客服中心 | 幫助信息 | 誠聘英才 | 網站地圖 | 加入收藏夾 | 意見反饋 | 快遞查詢 | 漢字轉換 | RSS訂閱
    ©2013-2015h665.cn 版權所有 粵ICP備14027189號-5 湘公網安備 43052302000106號

    互聯網違法和不良信息24小時舉報電話:13437489760 admin@h665.cn