std map與迭代器簡析

2021-08-08 09:16:01 字數 1147 閱讀 9519

最近在讀ros作業系統源**,多處遇到std::map這一容器。為更好理解ros源**,現將std::map的相關知識進行乙個梳理。

因ros而動意寫此文,故主要描述與ros**相關部分。

std::map是一種關聯容器,查詢乙個元素是否存在,並有效地獲取元素。具體地,map是乙個鍵/值(key/value)對,鍵(key)用於查詢,而值(value)包含我們希望使用的資料。例如**號碼本,鍵是人名,而值是對應的**號碼。

#include 

#include

int main()

}

輸出為:

1, 1.09

4, 4.13

9, 9.24

其中,呼叫的 a_map.begin() 及 a_map.end()屬於迭代器,用於訪問容器中的元素,詳見下一節。對於迭代器,it->first提取鍵,it->second提取值。

map容器的常用成員函式:

#include 

#include

#include

int main()

輸出:

a: 11

c: 0

迭代器(iterator)提供了一種一般化的方法,對順序或關聯容器型別中的每個元素進行連續訪問。例如,假設 iter 為任意容器型別的乙個迭代器,則

+

+iter;

表示向前移動迭代器,使其指向容器的下乙個元素 而

*iter;
返回 iterator 指向的元素的值。

每種容器型別都提供乙個 begin()和乙個 end()成員函式

container.begin()//返回乙個 iterator,它指向容器的第乙個元素

container.end()//返回乙個 iterator,它指向容器的末元素的下乙個位置

為了遍歷容器中的每乙個元素,我們可以這麼寫:

for (iter = container.begin();iter != container.end(); ++iter)

C 迭代器簡析

迭代器 iterator 有時又稱游標 cursor 是程式設計的 軟體設計模式 可在容器 container,例如鍊錶或 陣列 上遍訪的介面,設計人員無需關心容器的內容。簡單迭代器的實現 using system using system.collections using system.coll...

std map中迭代器失效的問題

刪除std map m中的元素,如果用迭代器操作 std map iterator it m.begin for it m.end it m.eraser it 這樣做會出問題,因為被eraser後迭代器失效,再進行 就會down機 如果這樣 std map iterator it m.begin ...

抑制計時器簡析

抑制計時器簡析 距離向量協議採用觸發更新來加速收斂過程。請記住,除觸發更新外,使用距離向量路由協議的路由器還會傳送定期更新。假設現在存在乙個不穩定的網路。在很短的時間內,介面被重置為 up,然後是 down,接著再重置為 up。該路由將發生擺動。使用觸發更新時,路由器可能會反應過快,從而在不知情的情...