最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中不得不說的map容器

 更新時間:2022年02月10日 10:16:34   作者:獨取一瓢C++  
大家好,本篇文章主要講的是C++中不得不說的map容器,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下

前言

為什么這兩天在研究C++的容器呢,因為刷題的時候碰見了幾個不擅長的題,得用STL中的幾種容器才能解出來,所以也是動力滿滿呀,希望能盡快轉(zhuǎn)過頭去把那幾個題給寫出來,哈哈哈,當然,解題思路和過程后續(xù)我也會分享出來。話不多說,老規(guī)矩,

使用map容器要包含頭文件#include<map>

1,map基本概念

簡介:

  map中所有元素都是pair(成對出現(xiàn)的數(shù))

  pair中第一個元素為key(鍵值),起到索引的作用,第二個元素為value(實值)

  所有的元素都會根據(jù)元素的鍵值自動排序

本質(zhì):

  map/multimap屬于關聯(lián)式容器,底層結構是用二叉樹實現(xiàn)的

優(yōu)點

  可以根據(jù)key值快速找到value值

map和multimap的區(qū)別:

  map不允許容器中有重復的key值元素

  multimap允許容器中有重復的key值元素

2,map構造和賦值

功能描述: 

  對map容器進行構造和賦值操作

代碼實現(xiàn):

#include<iostream>
#include<map>
using namespace std;
void printMap(map<int, int>& m)
{
	for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) {
		cout << "key=" << (*it).first << " value=" << (*it).second << endl;
	}
	cout << endl;
}
void test01()
{
	//創(chuàng)建map容器 1,默認構造
	map<int, int>m;  //要寫兩個數(shù)據(jù)類型
	m.insert(pair<int, int>(1, 10));
	m.insert(pair<int, int>(3, 30));  //與插入的順序無關
	m.insert(pair<int, int>(2, 20));  //容器會根據(jù)key值進行自動排序
	m.insert(pair<int, int>(4, 40));
	printMap(m);
 
	//2,拷貝構造
	map<int, int>m2(m);
	printMap(m2);
 
	//3,賦值
	map<int, int>m3;
	m3 = m2;  //等號方式賦值
	printMap(m3);
}
int main() {
	test01();
	return 0;
}

3,大小和交換

功能描述:

   統(tǒng)計map容器大小以及交換map容器

函數(shù)原型:

size(); //返回容器中元素的個數(shù)

empty(); //bool類型,判斷容器是否為空

swap(st); //交換兩個集合容器

4,插入和刪除

功能描述:

  map容器進行插入和刪除數(shù)據(jù)

代碼實現(xiàn):

#include<iostream>
#include<map>
using namespace std;
void test01()
{
	map<int, int>m;  
	//第一種插入
	m.insert(pair<int, int>(1, 10));
	
	//第二種插入
	m.insert(make_pair(2, 20)); //不用寫模板參數(shù)
 
	//第三種插入
	m.insert(map<int, int>::value_type(3, 30));
 
	//第四種插入
	m[4] = 40;
 
	//第一種刪除
	m.erase(m.begin()); //參數(shù)為迭代器
 
	//第二種刪除
	m.erase(1); //按照key刪除
 
	//第三種刪除
	m.erase(m.begin(), m.end()); //區(qū)間刪除
 
	//第四種刪除
	m.clear(); //全部刪除
}
int main() {
	test01();
	return 0;
}

5,查找和統(tǒng)計

功能描述:

  對map容器進行查找數(shù)據(jù)以及統(tǒng)計數(shù)據(jù)

函數(shù)原型:

  find(key);

/*查找key是否存在,若存在,返回該元素的迭代器;

若不存在,返回end()迭代器*/

  count(key);     // 統(tǒng)計key的元素個數(shù)

/*map不允許插入重復key值,count統(tǒng)計結果要么是0,要么是1

multimap的count統(tǒng)計結果可能大于1*/

6,排序

  map容器默認的排序方式是,按照key值進行從小到大的排序,但是我們可以利用仿函數(shù)實現(xiàn)從大到小排序,話不多說,直接上代碼

#include<iostream>
#include<map>
using namespace std;
class MyCompare
{
public:
	bool operator()(int v1,int v2)const
	{
		return v1 > v2;  //降序
	}
};
void test01()
{
	map<int, int, MyCompare>m;  //加入仿函數(shù)
	m.insert(make_pair(1, 10)); 
	m.insert(make_pair(2, 20));
	m.insert(make_pair(3, 30));
	m.insert(make_pair(4, 40));
	for (map<int, int,MyCompare>::iterator it = m.begin(); it != m.end(); it++) {//輸出的時候別忘了加上
		cout << "key=" << it->first << " value=" << it-> second << endl;
	}
}
int main() {
	test01();
	return 0;
}

另外,對于自定義數(shù)據(jù)類型,map必須要指定排序規(guī)則。

總結

到此這篇關于C++中不得不說的map容器的文章就介紹到這了,更多相關C++ map容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • OpenCV實現(xiàn)輪廓的發(fā)現(xiàn)

    OpenCV實現(xiàn)輪廓的發(fā)現(xiàn)

    這篇文章主要為大家詳細介紹了OpenCV如何實現(xiàn)輪廓的發(fā)現(xiàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • C語言用棧和隊列實現(xiàn)的回文檢測功能示例

    C語言用棧和隊列實現(xiàn)的回文檢測功能示例

    這篇文章主要介紹了C語言用棧和隊列實現(xiàn)的回文檢測功能,結合具體實例形式分析了C語言棧和隊列的定義及使用棧和隊列進行回文檢測的操作技巧,需要的朋友可以參考下
    2017-06-06
  • C語言開發(fā)實現(xiàn)貪吃蛇游戲

    C語言開發(fā)實現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細介紹了C語言開發(fā)實現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 詳解Qt如何使用QtWebApp搭建Http服務器

    詳解Qt如何使用QtWebApp搭建Http服務器

    這篇文章主要為大家詳細介紹了Qt如何使用QtWebApp搭建Http服務器,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-12-12
  • 基于C++泛型編程職工管理系統(tǒng)

    基于C++泛型編程職工管理系統(tǒng)

    這篇文章主要介紹了基于C++泛型編程職工管理系統(tǒng),前面介紹到了C++的泛型編程,并實現(xiàn)了萬能容器,不過那使用的是數(shù)組,今天呢咱帶大家實踐一下使用泛型技術,結合單鏈表實現(xiàn)一個職工管理系統(tǒng),需要的朋友可以參考一下
    2022-02-02
  • C++中讀寫txt文件并分離字符的方法

    C++中讀寫txt文件并分離字符的方法

    今天小編就為大家分享一篇C++中讀寫txt文件并分離字符的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 詳解QTreeWidget隱藏節(jié)點的兩種方式

    詳解QTreeWidget隱藏節(jié)點的兩種方式

    本文主要介紹了QTreeWidget隱藏節(jié)點的兩種方式,一種是直接隱藏,一種是間接隱藏,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++學習貝葉斯分類器實現(xiàn)手寫數(shù)字識別示例解析

    C++學習貝葉斯分類器實現(xiàn)手寫數(shù)字識別示例解析

    這篇文章主要介紹了在C++學習中如何采用貝葉斯分類器來實現(xiàn)手寫數(shù)字識別的示例及解析有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • VC程序在Win32環(huán)境下動態(tài)鏈接庫(DLL)編程原理

    VC程序在Win32環(huán)境下動態(tài)鏈接庫(DLL)編程原理

    這篇文章主要介紹了VC程序在Win32環(huán)境下動態(tài)鏈接庫(DLL)編程原理,包括了dll文件的原理與具體實現(xiàn)過程,對于深入掌握VC程序設計具有很好的參考借鑒價值,需要的朋友可以參考下
    2014-10-10
  • C語言實現(xiàn)繪制貝塞爾曲線的函數(shù)

    C語言實現(xiàn)繪制貝塞爾曲線的函數(shù)

    貝塞爾曲線,又稱貝茲曲線或貝濟埃曲線,是應用于二維圖形應用程序的數(shù)學曲線。本文將利用C語言實現(xiàn)繪制貝塞爾曲線的函數(shù),需要的可以參考一下
    2022-12-12

最新評論

固安县| 容城县| 同仁县| 湄潭县| 峨山| 大渡口区| 阳东县| 阿图什市| 蓬莱市| 大名县| 来凤县| 泽库县| 长宁区| 绥芬河市| 滨州市| 大兴区| 澄江县| 古浪县| 峨山| 沙湾县| 襄汾县| 黎川县| 万源市| 张家界市| 柘城县| 宝兴县| 灵川县| 金沙县| 玉山县| 财经| 辉县市| 桐梓县| 南京市| 同仁县| 黄山市| 博客| 寻乌县| 武义县| 清水县| 枝江市| 罗田县|