欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)式容器,底層結(jié)構(gòu)是用二叉樹實現(xiàn)的

優(yōu)點

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

map和multimap的區(qū)別:

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

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

2,map構(gòu)造和賦值

功能描述: 

  對map容器進行構(gòu)造和賦值操作

代碼實現(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,默認構(gòu)造
	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,拷貝構(gòu)造
	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)計結(jié)果要么是0,要么是1

multimap的count統(tǒng)計結(jié)果可能大于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ī)則。

總結(jié)

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

相關文章

  • 淺談C++中虛函數(shù)實現(xiàn)原理揭秘

    淺談C++中虛函數(shù)實現(xiàn)原理揭秘

    下面小編就為大家?guī)硪黄獪\談C++中虛函數(shù)實現(xiàn)原理揭秘。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • C++設計模式之外觀模式(Facade)

    C++設計模式之外觀模式(Facade)

    這篇文章主要為大家詳細介紹了C++設計模式之外觀模式(Facade),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • C語言驅(qū)動開發(fā)之通過ReadFile與內(nèi)核層通信

    C語言驅(qū)動開發(fā)之通過ReadFile與內(nèi)核層通信

    驅(qū)動與應用程序的通信是非常有必要的,內(nèi)核中執(zhí)行代碼后需要將其動態(tài)顯示給應用層。為了實現(xiàn)內(nèi)核與應用層數(shù)據(jù)交互則必須有通信的方法,微軟為我們提供了三種通信方式,本文先來介紹通過ReadFile系列函數(shù)實現(xiàn)的通信模式
    2022-09-09
  • C++寫Linux框架示例解析

    C++寫Linux框架示例解析

    這篇文章主要為大家介紹了C++實現(xiàn)Linux框架示例代碼詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • C++11時間日期庫chrono的使用

    C++11時間日期庫chrono的使用

    chrono是C++11中新加入的時間日期操作庫,可以方便地進行時間日期操作,本文詳細的介紹了一下如何使用,感興趣的可以了解一下
    2022-01-01
  • VSCode C/C++多文件編譯配置小結(jié)

    VSCode C/C++多文件編譯配置小結(jié)

    本文主要介紹了VSCode C/C++多文件編譯配置小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08
  • QT基于TCP實現(xiàn)文件傳輸系統(tǒng)

    QT基于TCP實現(xiàn)文件傳輸系統(tǒng)

    這篇文章主要為大家詳細介紹了QT基于TCP實現(xiàn)文件傳輸系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • wxWidgets實現(xiàn)無標題欄窗口拖動效果

    wxWidgets實現(xiàn)無標題欄窗口拖動效果

    這篇文章主要為大家詳細介紹了wxWidgets實現(xiàn)無標題欄窗口拖動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • c語言求余數(shù)的實例講解

    c語言求余數(shù)的實例講解

    在本篇文章里小編給大家整理的是關于c語言如何求余數(shù)的相關知識點內(nèi)容,有需要的朋友們可以學習下。
    2020-02-02
  • C語言中的socket編程實例代碼

    C語言中的socket編程實例代碼

    這篇文章主要介紹了如何用C語言實現(xiàn)socket編程,文中代碼非常詳細,供大家學習參考,感興趣的朋友可以了解下
    2020-06-06

最新評論