日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

map/multimap用法详解

發布時間:2024/2/28 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 map/multimap用法详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
multimap 類 ?

標準模板庫多重映射類用于存儲和檢索集合中的數據,此集合中的每個元素均為包含數據值和排序鍵的元素對。?鍵值不需要唯一,用于自動排序數據。?可以直接更改多重映射中的元素值,但不能直接更改其關聯鍵值。?必須先刪除與舊元素關聯的鍵值,才能插入與新元素關聯的新鍵值。

語法 template <class Key, class Type, class Traits=less<Key>, class Allocator=allocator<pair <const Key, Type> > > class multimap; 參數 Key

要存儲在多重映射中的鍵數據類型。

Type

要存儲在多重映射中的元素數據類型。

Traits

一種提供函數對象的類型,該函數對象可將兩個元素值作為排序鍵進行比較,以確定其在多重映射中的相對順序。?默認值是二元謂詞?less<Key>

在 C++ 14 中可以通過指定沒有類型參數的?std::less<>?或?std::greater<>?謂詞來啟用異類查找。?有關詳細信息,請參閱8e915ca1-19ba-4f0d-93c8-e2c3bfd638eb#sequence_containers

Allocator

一種表示存儲的分配器對象的類型,該分配器對象封裝有關映射的內存分配和解除分配的詳細信息。?此參數為可選參數,默認值為?allocator<pair <const Key, Type> >

備注

STL 多重映射類是:

  • 大小可變的關聯容器,支持基于關聯鍵值高效檢索元素值。

  • 可逆,因為它提供雙向迭代器來訪問其元素。

  • 有序,因為它的元素在容器中根據指定的比較函數按鍵值排序。

  • 多個,它的元素不需要具有唯一鍵,因此一個鍵值可具有多個相關聯的元素數據值。

  • 關聯容器對,因為它的元素數據值與其鍵值不同。

  • 模板類,因為它提供的功能是一般性的功能,因此與作為元素或鍵包含的特定數據類型無關。?用于元素和鍵的數據類型作為類模板以及比較函數和分配器中的參數指定。

映射類提供的迭代器是雙向迭代器,但類成員函數?insert?和?multimap?具有將較弱輸入迭代器作為模板參數的版本,較弱輸入迭代器的功能要求比雙向迭代器類保證的功能要求更少。?不同的迭代器概念形成一個系列,通過它們的功能優化相關聯。?每個迭代器概念有它自己的一套要求,使用這些概念的算法必須根據迭代器類型提供的要求限制它們的假設。?可以假定輸入迭代器可取消引用以引用某個對象,并可遞增到序列中的下一迭代器。?這是最小的功能集,但足以按有意義的方式提供類成員函數的上下文中的迭代器范圍?[First, Last)

容器類型選擇通常應根據應用程序所需的搜索和插入的類型。?關聯容器針對查找、插入和移除操作進行了優化。?顯式支持這些操作的成員函數較為高效,執行這些操作的時間與容器中元素數量的對數平均成比例。?插入元素不會使迭代器失效,移除元素僅會使專門指向已移除元素的迭代器失效。

當應用程序滿足將值與其鍵關聯的條件時,應選擇多重映射作為關聯容器。?此類結構的模型是關鍵字排序列表,這些關鍵字具有提供定義等的關聯字符串值,并且并非始終唯一定義。?如果關鍵字經過唯一定義以使鍵唯一,則應選擇映射作為容器。?另一方面,如果僅存儲關鍵字列表,則應使用集作為正確容器。?如果允許關鍵字多次出現,則應使用多重集合作為適當的容器結構。

多重映射通過調用存儲的?key_compare?類型的函數對象,對它控制的序列進行排序。?此存儲的對象是比較函數,可通過調用成員函數?key_comp?訪問。?通常,元素僅需小于比較元素即可建立此順序;因此,給定任意兩個元素,可以確定這兩個元素等效(即兩者均不小于對方)或其中一個小于另一個。?這將導致在非等效元素之間進行排序。?在技術性更強的說明中,比較函數是一個二元謂詞,在標準數學的意義上引發嚴格弱排序。?二元謂詞?f(x,y)?是包含兩個參數對象(x?和y)以及一個返回值(true 或 false)的函數對象。?如果二元謂詞具有自反性、反對稱性和傳遞性且等效可傳遞,對集進行的排序將為嚴格弱排序,其中兩個對象x?和?y?定義為在?f(x,y)?和?f(y,x)?均為 false 時等效。?如果鍵之間的更強相等條件取代了等效性,則排序將為總排序(即所有元素彼此排序),并且匹配的鍵將難以彼此辨別。

在 C++ 14 中可以通過指定沒有類型參數的?std::less<>?或?std::greater<>?謂詞來啟用異類查找。?有關詳細信息,請參閱8e915ca1-19ba-4f0d-93c8-e2c3bfd638eb#sequence_containers

成員 構造函數

multimap

構造一個空的或者是其他某個?multimap?的全部或部分副本的?multimap

Typedef

allocator_type

一種類型,此類型表示?allocator?對象的?multimap?類。

const_iterator

一種類型,此類型提供可讀取?const?中的?multimap?元素的雙向迭代器。

const_pointer

一種類型,此類型提供指向?const?中的?multimap?元素的指針。

const_reference

一種類型,此類型提供對存儲在?const?中的?multimap?元素的引用(用于讀取和執行?const?操作)。

const_reverse_iterator

一種類型,此類型提供可讀取?const?中的任何?multimap?元素的雙向迭代器。

difference_type

一種有符號整數類型,此類型可用于表示?multimap?中迭代器指向的元素間范圍內的元素數量。

iterator

一種類型,此類型提供引用同一?multimap?中的元素的兩個迭代器之間的差異。

key_compare

一種提供函數對象的類型,該函數對象可比較兩個排序鍵以確定?multimap?中兩個元素的相對順序。

key_type

一種類型,此類型描述組成?multimap?中每個元素的排序鍵對象。

mapped_type

一種類型,此類型表示存儲在?multimap?中的數據類型。

指針

一種類型,此類型提供指向?const?中的?multimap?元素的指針。

引用

一種類型,此類型提供對存儲在?multimap?中的元素的引用。

reverse_iterator

一種類型,此類型提供可讀取或修改反向?multimap?中的元素的雙向迭代器。

size_type

一種無符號整數類型,此類型提供指向?const?中multimap?元素的指針。

value_type

一種提供函數對象的類型,該函數對象可將兩個元素作為排序鍵比較以確定它們在?multimap?中的相對順序。

成員函數

begin

返回一個迭代器,此迭代器用于發現?multimap?中的第一個元素。

cbegin

返回一個常量迭代器,此迭代器用于發現?multimap?中的第一個元素。

cend

返回一個常量迭代器,此迭代器用于發現?multimap?中最后一個元素之后的位置。

清除

清除?multimap?的所有元素。

count

返回?multimap?中其鍵與指定為參數的鍵匹配的元素數量。

crbegin

返回一個常量迭代器,此迭代器用于發現反向?multimap?中的第一個元素。

crend

返回一個常量迭代器,此迭代器用于發現反向?multimap?中最后一個元素之后的位置。

emplace

將就地構造的元素插入到?multimap

emplace_hint

將就地構造的元素插入到?multimap,附帶位置提示

測試?multimap?是否為空。

end

返回一個迭代器,此迭代器用于發現?multimap?中最后一個元素之后的位置。

equal_range

查找其中元素的鍵與指定值匹配的元素范圍。

erase

從?multimap?中的指定位置移除一個元素或元素范圍,或者移除與指定鍵匹配的元素。

find

返回一個迭代器,此迭代器用于發現?multimap?中其鍵與指定鍵等效的元素的第一個位置。

get_allocator

返回用于構造?allocator?的?multimap?對象的副本。

插入

將一個元素或元素范圍插入到?multimap

key_comp

檢索用于對?multimap?中的鍵進行排序的比較對象副本。

lower_bound

返回一個迭代器,此迭代器指向?multimap?中其鍵等于或大于指定鍵的第一個元素。

max_size

返回?multimap?的最大長度。

rbegin

返回一個迭代器,此迭代器用于發現反向?multimap?中的第一個元素。

rend

返回一個迭代器,此迭代器用于發現反向?multimap?中最后一個元素之后的位置。

size

返回?multimap?中的元素數量。

swap

交換兩個?multimap?的元素。

upper_bound

返回一個迭代器,此迭代器指向?multimap?中其鍵大于指定鍵的第一個元素。

value_comp

此成員函數返回一個函數對象,該函數對象可通過比較?multimap?中元素的鍵值來確定元素順序。

運算符

operator =

將一個?multimap?中的元素替換為另一?multimap?副本。

要求

標頭:<map>

命名空間:?std

(key,?value) 對作為?pair?類型的對象存儲在多重映射中。?此對類需要標頭 <utility>,<map> 自動包括此標頭。

總結

以上是生活随笔為你收集整理的map/multimap用法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。