C STL map容器迭代器遍歷

2021-10-20 10:44:04 字數 2020 閱讀 2240

c++ stl map容器迭代器遍歷

標準庫為 map 容器配備的是雙向迭代器(bidirectional iterator)。這意味著,map 容器迭代器只能進行 ++p、p++、–p、p–、*p 操作,並且迭代器之間只能使用 == 或者 != 運算子進行比較。

值得一提的是,相比序列式容器,map 容器提供了更多的成員方法(如表 1 所示),通過呼叫它們,我們可以輕鬆獲取具有指定含義的迭代器。

成員方法

功能begin()

返回指向容器中第乙個(注意,是已排好序的第乙個)鍵值對的雙向迭代器。如果 map 容器用 const 限定,則該方法返回的是 const 型別的雙向迭代器。

end()

返回指向容器最後乙個元素(注意,是已排好序的最後乙個)所在位置後乙個位置的雙向迭代器,通常和 begin() 結合使用。如果 map 容器用 const 限定,則該方法返回的是 const 型別的雙向迭代器。

rbegin()

返回指向最後乙個(注意,是已排好序的最後乙個)元素的反向雙向迭代器。如果 map 容器用 const 限定,則該方法返回的是 const 型別的反向雙向迭代器。

rend()

返回指向第乙個(注意,是已排好序的第乙個)元素所在位置前乙個位置的反向雙向迭代器。如果 map 容器用 const 限定,則該方法返回的是 const 型別的反向雙向迭代器。

cbegin()

和 begin() 功能相同,只不過在其基礎上,增加了 const 屬性,不能用於修改容器內儲存的鍵值對。

cend()

和 end() 功能相同,只不過在其基礎上,增加了 const 屬性,不能用於修改容器內儲存的鍵值對。

crbegin()

和 rbegin() 功能相同,只不過在其基礎上,增加了 const 屬性,不能用於修改容器內儲存的鍵值對。

crend()

和 rend() 功能相同,只不過在其基礎上,增加了 const 屬性,不能用於修改容器內儲存的鍵值對。

find(key)

在 map 容器中查詢鍵為 key 的鍵值對,如果成功找到,則返回指向該鍵值對的雙向迭代器;反之,則返回和 end() 方法一樣的迭代器。另外,如果 map 容器用 const 限定,則該方法返回的是 const 型別的雙向迭代器。

lower_bound(key)

返回乙個指向當前 map 容器中第乙個大於或等於 key 的鍵值對的雙向迭代器。如果 map 容器用 const 限定,則該方法返回的是 const 型別的雙向迭代器。

upper_bound(key)

返回乙個指向當前 map 容器中第乙個大於 key 的鍵值對的迭代器。如果 map 容器用 const 限定,則該方法返回的是 const 型別的雙向迭代器。

equal_range(key)

該方法返回乙個 pair 物件(包含 2 個雙向迭代器),其中 pair.first 和 lower_bound() 方法的返回值等價,pair.second 和 upper_bound() 方法的返回值等價。也就是說,該方法將返回乙個範圍,該範圍中包含的鍵為 key 的鍵值對(map 容器鍵值對唯一,因此該範圍最多包含乙個鍵值對)。

表 1 中多數的成員方法,諸如 begin()、end() 等,在學習序列式容器時已經多次使用過,它們的功能如圖 2 所示。

遍歷

std::mapmymap;

//呼叫 begin()/end() 組合,遍歷 map 容器

for (auto iter = mymap.begin(); iter != mymap.end(); ++iter)

此處用的是迭代器來查詢的key和value;

}反向遍歷:

此處比較陌生,但容易碰到,(rbegin(),rend())

for (auto iter = mymap.rbegin(); iter != mymap.rend(); --iter)

C STL map容器詳解

作為關聯式容器的一種,map 容器儲存的都是 pair 物件,也就是用 pair 類模板建立的鍵值對。其中,各個鍵值對的鍵和值可以是任意資料型別,包括 c 基本資料型別 int double 等 使用結構體或類自定義的型別。通常情況下,map 容器中儲存的各個鍵值對都選用 string 字串作為鍵的...

容器 迭代器

stl包括 容器 資料結構 迭代器 遍歷資料 演算法 順序容器 vector 向量 list 鍊錶 deque 雙端佇列 關聯容器 set 集合 multist map 對映 multimap 迭代器 類似於指標 用來訪問容器中的單個資料項 迭代器由類iterator來宣告。include incl...

迭代器遍歷

iterator物件稱為迭代器,主要用於遍歷collection 集合中的元素。所有實現了collection介面的集合類都有乙個iterator 方法,用以返回乙個實現了lterator介面的物件,即可以返回乙個迭代器。lterator的結構.iterator僅用於遍歷集合,iterator本身並...