1. 程式人生 > >STL學習之map容器(3)

STL學習之map容器(3)

map::find

iterator find ( const key_type& x );
const iterator find( const key_type& x) const;

獲取元素的迭代器

獲取map容器中指定鍵值x的元素,如果找到,返回此元素的迭代器,否則返回map::end()的迭代器(即查詢到容器的末尾都沒有找到此元素)。

前面章節介紹的map::count成員函式也可以有類似的功能,詳見介紹。

引數


       需要查詢的鍵值。

        Key_type是map容器定義的作為Key別名的一個成員型別。

返回值

    指向元素的迭代器,如果指定的鍵值找到,返回找到元素的迭代器或者指定的鍵值沒有找到返回map::end。

例項:

#include <iostream>
#include <map>

using namespace std;

int main(void)
{
	map<char, int> mymap;
	map<char, int>::iterator it;
	
	mymap['a'] = 50;
	mymap['b'] = 100;
	mymap['c'] = 150;
	mymap['d'] = 200;

	it = mymap.find('b');
	mymap.erase(it);
	mymap.erase(mymap.find('d'));

	cout << "mymap contains:" << endl;
	for (it = mymap.begin(); it != mymap.end(); ++it)
		cout << (*it).first << "=>" << (*it).second << endl;
	
	cout << " elements in mymap:" << endl;
	cout << " a=> " << mymap.find('a')->second << endl;
	cout << " b=> " << mymap.find('b')->second << endl;
	cout << " c=> " << mymap.find('c')->second << endl;
	cout << " d=> " << mymap.find('d')->second << endl;
	return 0;
}

執行結果:

[email protected]:~/mycode/STL$ g++ map_find.cpp -o map_find
[email protected]:~/mycode/STL$ ./map_find
mymap contains:
a=>50
c=>150
 elements in mymap:
 a=> 50
 b=> -1076412860 //不存在
 c=> 150
 d=> -1076412860 //不存在

map::erase

void erase( iterator postion );
size_type erase( const key_type& x );
void erase( iterator first, iterator last );

刪除元素

從map容器中刪除一個元素或者一個區間的元素([first, last));

引數

postion

        指向被map容器中刪除元素迭代器指標。

        iterator是一個成員型別,定義作為雙向迭代器型別。

x

       從map容器中移除的元素值。

first,last

        指定迭代器區間[first,last),需要從map容器中刪除的區間。

返回值

       僅第二個版本,函式返回需要刪除的元素個數。

例項:

// erasing from map
#include <iostream>
#include <map>
using namespace std;

int main ()
{
  map<char,int> mymap;
  map<char,int>::iterator it;

  // insert some values:
  mymap['a']=10;
  mymap['b']=20;
  mymap['c']=30;
  mymap['d']=40;
  mymap['e']=50;
  mymap['f']=60;

  it=mymap.find('b');
  mymap.erase (it);                   // erasing by iterator

  mymap.erase ('c');                  // erasing by key

  it=mymap.find ('e');
  mymap.erase ( it, mymap.end() );    // erasing by range

  // show content:
  for ( it=mymap.begin() ; it != mymap.end(); it++ )
    cout << (*it).first << " => " << (*it).second << endl;

  return 0;
}

執行結果:
[email protected]:~/mycode/STL$ g++ map_erase.cpp -o map_erase
[email protected]:~/mycode/STL$ ./map_erase 
a => 10
d => 40

map::lower_bound

iterator lower_bound( const key_type& x );
const iterator lower_bound( const key_type& x ) const;

返回指向下界的迭代器

返回一個指向容器中第一個鍵值大於或者等於x元素迭代器。

map::upper_bound

iterator upper_bound( const key_type& x );
const iterator upper_bound( const key_type& x ) const;
返回指向上界的迭代器

返回一個指向容器中第一個鍵值大於x元素迭代器。

從定義中可以看到upper_bound和lower_bound區別。

upper_bound和lower_bound引數

x

      比較的鍵值。

例項:

#include <iostream>
#include <map>

using namespace std;

int main(void)
{
	map<char, int> mymap;
	map<char, int>::iterator it, itlow, itup;
	
	mymap['a'] = 20;
	mymap['b'] = 40;
	mymap['c'] = 60;
	mymap['d'] = 80;
	mymap['e'] = 100;

	itlow = mymap.lower_bound('b');
	itup = mymap.upper_bound('d');

	mymap.erase(itlow, itup);
	
	for( it= mymap.begin(); it != mymap.end(); ++it)
		cout << (*it).first << "=>" << (*it).second << endl;
	return 0;
}

執行結果:

[email protected]:~/mycode/STL$ g++ map_bound.cpp -o map_bound
[email protected]:~/mycode/STL$ ./map_bound 
a=>20
e=>100


相關推薦

STL學習map容器3

map::find iterator find ( const key_type& x ); const iterator find( const key_type& x) const; 獲取元素的迭代器 獲取map容器中指定鍵值x的元素,如果找到,返回

Linux學習路--Mariadb3基本使用操作【20】---20180123

result run page 提高 進行 組成 varchar alias pan 一、MariaDB程序1、MariaDB的程序組成Client mysql:CLI交互式客戶端程序 mysqldump,mysqladmin...Server mysq

MySQL學習路43

資料庫的基本操作3 4.刪除資料表 4.1刪除沒有被關聯的表 DROP TABLE可以一次刪除一個或多個沒有被其他表關聯的的資料表。語法格式如下: DROP TABLE [IF EXISITS] 表1,表2,……,表n; 如果要刪除的資料表不存在,則會出現一條錯誤資訊: ERROR 10

深度學習PyTorch實戰3——實戰手寫數字識別

  上一節,我們已經學會了基於PyTorch深度學習框架高效,快捷的搭建一個神經網路,並對模型進行訓練和對引數進行優化的方法,接下來讓我們牛刀小試,基於PyTorch框架使用神經網路來解決一個關於手寫數字識別的計算機視覺問題,評價我們搭建的模型的標準是它是否能準確的對手寫數字圖片進行識別。   

STL學習筆記— —無序容器Unordered Container

ring 最大 布局 size fad oca rgs template max 簡單介紹 在頭文件<unordered_set>和<unordered_map> 中定義 namespace std { templa

[知了堂學習筆記]_JS小遊戲打飛機3-飛機之間的互相撞擊,boss的出現,以及控制boss死亡

時間 i++ score console function sss 間隔 app tint 我的小飛機和敵軍小飛機撞擊的效果的實現: 1 /** 2 * 定義我的飛機與敵機碰撞的方法: 3 */ 4 function destoryMyPlane(){ 5

20180813視頻筆記 深度學習基礎上篇1必備基礎知識點 深度學習基礎上篇2神經網絡模型視頻筆記:深度學習基礎上篇3神經網絡案例實戰 和 深度學習基礎下篇

計算 概念 人臉識別 大量 png 技巧 表現 lex github 深度學習基礎上篇(3)神經網絡案例實戰 https://www.bilibili.com/video/av27935126/?p=1 第一課:開發環境的配置 Anaconda的安裝 庫的安裝 Windo

TensorFlow學習筆記原始碼分析3---- retrain.py

"""簡單呼叫Inception V3架構模型的學習在tensorboard顯示了摘要。 這個例子展示瞭如何採取一個Inception V3架構模型訓練ImageNet影象和訓練新的頂層,可以識別其他類的影象。 每個影象裡,頂層接收作為輸入的一個2048維向量。這

STLmap實現

map其實就是一個對映,想象你在使用新華字典的時候,輸入一個單詞,就能得到這個單詞的意思,這樣就形成了一個對映。 為了實現map,你需要有類和物件,虛擬函式,模板,pair型別基礎 首先,介紹一下模板,看下面的函式(重複做同樣事情的函式,只是型別不一樣) int sum

Qt 學習路 238:儲存容器

儲存容器(containers)有時候也被稱為集合(collections),是能夠在記憶體中儲存其它特定型別的物件,通常是一些常用的資料結構,一般是通用模板類的形式。C++ 提供了一套完整的解決方案,作為標準模板庫(Standard Template Library

FPGA學習數碼管封裝顯示時間

rtu 環境 tro gb2312 配置 fpga 模塊 rtl 顯示時間 一、實驗目的:學習數碼管封裝以及顯示時間。二、實驗環境:FPGA開發板AX301,Quartus ii三、實驗介紹:將數碼管顯示模塊封裝起來,同時通過不斷讀取RTC時鐘的時分秒值,將之顯示在數碼管。

STM32學習路-LCD4&lt;顯示字符&gt;

計算 ack 字節 ring oid ng- 透明 標點符號 函數 昨晚瘋狂的打了一夜的LOL,感覺L多了,今天一天精神萎靡.還是繼續把顯示字符給看了,可是在猶豫要不要寫這篇文章 事實上寫的東西也就是copy別人家的代碼,不想寫那麽多,就記錄下自己困惑的地方吧.也

Java旅hibernate3——第一個hibernate的樣例

數據庫方言 自由 article 存儲 代理 mit rup 方便 post  在解說樣例之前。我們首先來理解一下hibernate的工作原理。理解原理將會幫助我們更好地理解hibernate和運用hibernate。  1. 原理圖   利用hibe

Spring源碼分析IOC容器

util 感覺 不能 end bsp initial 博文 要掌握 sof   Spring作為當今風靡世界的Web領域的第一框架,作為一名Java開發程序員是一定要掌握的,除了需要掌握基本的使用之外,更需要掌握其實現原理,因為我們往往在開發的過程中,會出現各種各樣的異常問

Swift學習元組Tuple

元素 first 類型 hello 元組 world ron test str 定義 元組是由若幹個類型的數據組成,組成元組的數據叫做元素,每個元素的類型都可以是任意的。 用法一 let tuples1 = ("Hello", "World", 2017) //元組跟數組一

小白學習Code First

數據庫 change chang chan inf 模型 code test nbsp 上下文Context類中的base構造器的幾個方法重置(1、無參 2、database name 3 、 連接字符串) 無參:如果基類base方法中無參,code first將會以 :{

小白學習Code First

文件中 build 默認 dbm pcre student 技術分享 使用 類名 Code First約定: 註:EDMX模板 (SSDL:存儲模型=>數據庫表 ,CSDL:概念模型=>實體,C-S模型=>存儲和概念模型之間的映射關系) System.Da

輕松入門機器學習概念總結

消息 目的 作者 固定 erp 效率 dev 常用 度量 歡迎大家前往雲加社區,獲取更多騰訊海量技術實踐幹貨哦~ 作者:許敏 接上篇:機器學習概念總結筆記(一) 8)邏輯回歸 logistic回歸又稱logistic回歸分析,是一種廣義的線性回歸分析模型,常用於數據挖掘

Qt 學習路 240:隱式數據共享

深拷貝和淺拷貝 != 這樣的 pointer map painter pos 轉載 多線程 博客轉載自:https://www.devbean.net/2013/01/qt-study-road-2-implicit-sharing/ Qt 中許多 C++ 類使用了隱式數據

Scala語言學習環境安裝1

下載 erlang 利用 ons 拆分 直接 線程模型 新功能 scala ==> Scala語言簡介 --> Scala編程語言抓住了很多開發者的眼球。如果你粗略瀏覽Scala的網站,你會覺得Scala是一種純粹的面向對象編程語言,而又無縫地結合