中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

外包公司做的網(wǎng)站怎么改密碼站長之家app下載

外包公司做的網(wǎng)站怎么改密碼,站長之家app下載,鄒平做網(wǎng)站的聯(lián)系方式,海南工程網(wǎng)站建設一、介紹 在C的map / multimap容器中,所有的元素均是pair類型(有關pair類型可以參考我之前寫的 《C的set / multiset容器》的3.2中有介紹到)。 每對pair的第一個元素被稱為關鍵字key,第二個元素被稱為值value。因此,ma…

一、介紹

??????? 在C++的map / multimap容器中,所有的元素均是pair類型(有關pair類型可以參考我之前寫的?《C++的set / multiset容器》的3.2中有介紹到)。

????????每對pair的第一個元素被稱為關鍵字key,第二個元素被稱為value。因此,map的元素也被稱為鍵值對。

????????將元素插入map / multimap后,元素會根據(jù)關鍵字的排序規(guī)則自動排序

二、數(shù)據(jù)結構

????????map / multimap容器均屬于關聯(lián)式容器,底層使用平衡二叉樹 / 紅黑樹實現(xiàn)。

三、map與multimap的區(qū)別

??????? map與multimap的區(qū)別在于是否可以出現(xiàn)重復的key。

map不允許同一個map中出現(xiàn)重復key
multimap允許同一個map中出現(xiàn)重復ke


????????由于二者之間除此以外并無差別,因此下文例子均基于map容器的使用示例。

四、map的使用

??????? map在使用前,請包含頭文件#include<map>。此外,為了便于觀察示例結果,以下示例均使用自己編寫的printMap函數(shù)打印map所有鍵值對信息。

//打印map所有鍵值對
void printMap(map<int, char> &m) {//判空if (m.empty()) {cout << "The map is empty now." << endl;return;}for (map<int, char>::iterator it = m.begin(); it != m.end(); it++) {cout << "<" << it->first << ", " << it->second << ">" << endl;}
}

4.1 map初始化

??????? map的初始化可以使用構造函數(shù)=運算符實現(xiàn):

聲明解釋
map<T1, T2> m;

構造函數(shù),初始化一個空map

m的關鍵字key類型為T1值value的類型為T2

map<T1, T2> m(map<T1, T2> m1);拷貝構造函數(shù),用m1初始化m
operator=(map<T1, T2> m1)

重載的=運算符,

有關重載運算符可以看我之前寫的《C++重載運算符》

map<int, char> m0;//初始化一個空map,key為int類型,value為char類型
map<int, char> m1(m0);//拷貝構造函數(shù)
map<int, char> m2 = m0;//使用重載的等號運算符

4.2 map容量與大小

聲明解釋
empty()判斷map是否為空
size()返回map中鍵值對數(shù)目
map<int, char> m0;
for (int i = 0; i < 10; i++) {//i作為key,小寫字母作為valuem0.insert(pair<int, char>(i, 'a' + i));
}
//cout << "m0 : " << endl; printMap(m0);cout << boolalpha << m0.empty() << endl;//false
cout << m0.size() << endl;//10

???????? 程序的執(zhí)行結果如下所示:

4.3 map交換元素

聲明解釋
swap(map<T1, T2> m1)交換當前map與m1的全部元素
map<int, char> m0;
map<int, char> m1;
for (int i = 0; i < 10; i++) {//i作為key,小寫字母作為m0的valuem0.insert(pair<int, char>(i, 'a' + i));//i作為key,大寫字母作為m1的valuem1.insert(pair<int, char>(i, 'A' + i));
}cout << "Before Swap : " << endl;
cout << "m0 : " << endl; printMap(m0);
cout << "m1 : " << endl; printMap(m1);m0.swap(m1);//交換
cout << "-------------------分割線--------------------" << endl;
cout << "After. Swap : " << endl;
cout << "m0 : " << endl; printMap(m0);
cout << "m1 : " << endl; printMap(m1);

???????? 程序執(zhí)行結果如下所示:

4.4 map插入元素

聲明解釋
insert(pair<T1, T2>(key, value))將鍵值對<key, value>插入到map
map<int, char> m0;
for (int i = 0; i < 10; i++) {//i作為key,小寫字母作為m0的valuem0.insert(pair<int, char>(i, 'a' + i));
}
cout << "m0 : " << endl; printMap(m0);

?????????程序運行結果如下所示:

4.5 map刪除元素

聲明解釋
erase(pos)

刪除迭代器pos指向的那個元素,

返回下一個元素的迭代器

erase(begin, end)

刪除迭代器pos指向的那個元素,

返回下一個元素的迭代器

erase(key)

刪除map中關鍵字key的元素

(如果是multimap,則刪除關鍵字key全部元素)

clear()清除全部元素

4.5.1 erase(pos)示例

map<int, char> m0;
for (int i = 0; i < 10; i++) {//i作為key,小寫字母作為m0的valuem0.insert(pair<int, char>(i, 'a' + i));
}
cout << "m0 : " << endl; printMap(m0);//erase(m0.begin+1)
map<int, char>::iterator begin = m0.begin();
begin++;
m0.erase(begin);
cout << "After erase(m0.begin+1) , m0 : " << endl; printMap(m0);

??????? 程序運行結果如下所示:

4.5.2 erase(begin, end)示例

map<int, char> m0;
for (int i = 0; i < 10; i++) {//i作為key,小寫字母作為m0的valuem0.insert(pair<int, char>(i, 'a' + i));
}
cout << "m0 : " << endl; printMap(m0);//erase(m0.begin+1, end-2)
map<int, char>::iterator begin = m0.begin();
map<int, char>::iterator end = m0.end();
begin++;
end--; end--;
m0.erase(begin, end);
cout << "After erase(m0.begin+1, end-2) , m0 : " << endl; printMap(m0);

???????? 程序運行結果如下所示:

4.5.3 erase(key)示例

??????? 為了便于測試刪除的是關鍵字為key全部元素,此示例采用multimap:

multimap<int, char> m0;
for (int i = 0; i < 10; i++) {//i作為key,小寫字母作為m0的valuem0.insert(pair<int, char>(i, 'a' + i));
}
//插入<0, 'A'> <0, 'B'> <0, 'C'>
for (int i = 0; i < 3; i++) {m0.insert(pair<int, char>(0, 'A' + i));
}
cout << "m0 : " << endl; printMap(m0);//erase(0)
m0.erase(0);
cout << "After erase(0) , m0 : " << endl; printMap(m0);

??????? 程序運行結果如下所示:

4.5.4 clear()示例

map<int, char> m0;
for (int i = 0; i < 10; i++) {//i作為key,小寫字母作為m0的valuem0.insert(pair<int, char>(i, 'a' + i));
}
cout << "m0 : " << endl; printMap(m0);//clear()
m0.clear();
cout << "After clear() , m0 : " << endl; printMap(m0);

???????? 程序運行結果如下所示:

4.6 map查找元素

聲明解釋
find(key)

返回map中關鍵字key第一個元素的迭代器

如果沒找到,返回end()

multimap<int, char> m0;
for (int i = 0; i < 10; i++) {//i作為key,小寫字母作為m0的valuem0.insert(pair<int, char>(i, 'a' + i));
}
//插入<0, 'A'> <0, 'B'> <0, 'C'>
for (int i = 0; i < 3; i++) {m0.insert(pair<int, char>(0, 'A' + i));
}
cout << "m0 : " << endl; printMap(m0);//找到key為0的第一個元素的迭代器
multimap<int, char>::iterator it = m0.find(0);
cout << "it->second : " << it->second << endl;

???????? 程序運行結果如下所示:

4.7 map統(tǒng)計指定元素個數(shù)

聲明解釋
count(key)統(tǒng)計map中關鍵字key的元素個數(shù)
multimap<int, char> m0;
for (int i = 0; i < 10; i++) {//i作為key,小寫字母作為m0的valuem0.insert(pair<int, char>(i, 'a' + i));
}
//插入<0, 'A'> <0, 'B'> <0, 'C'>
for (int i = 0; i < 3; i++) {m0.insert(pair<int, char>(0, 'A' + i));
}
cout << "m0 : " << endl; printMap(m0);//統(tǒng)計key為0的元素個數(shù)
cout << "m0.count(0) : " << m0.count(0) << endl;

??????? 程序運行結果如下所示:

4.8 map自定義排序規(guī)則

??????? map和set類似,一樣可以通過仿函數(shù)指定自己的排序規(guī)則。(有關set容器可以看我之前寫的文章《C++的set / multiset容器》)

????????下面給出一個示例便于直觀理解。為了便于說明問題,以下類中的成員權限均設置為public。首先我們先自定義一個關鍵字類MyKey

class MyKey {
public://優(yōu)先級:id1 > id2int id1;int id2;
};

??????? 接下來我們給出指定排序規(guī)則仿函數(shù)

//仿函數(shù):自定義排序規(guī)則
class MyKeyCompare {
public:bool operator()(MyKey k1, MyKey k2) const {if (k1.id1 == k2.id1) {//如果二者id1相等,則比較id2return k1.id2 < k2.id2;}else {return k1.id1 < k2.id1;}}
};

??????? 在定義語句的第三個泛型中指定仿函數(shù),元素在插入后將自動按照仿函數(shù)的規(guī)則進行排序,在主函數(shù)進行測試,打印map的全部元素信息:

//打印map所有元素信息的函數(shù)
void printMp(map<MyKey, string, MyKeyCompare> &mp) {for (map<MyKey, string>::iterator it = mp.begin(); it != mp.end(); it++) {cout << "id1為" << it->first.id1 << ", ";cout << "id2為" << it->first.id2 << ", ";cout << "名為" << it->second << endl;}
}//主函數(shù)
int main() {map<MyKey, string, MyKeyCompare> mp;mp.insert(pair<MyKey, string>(MyKey(0, 1), "A"));mp.insert(pair<MyKey, string>(MyKey(2, 1), "B"));mp.insert(pair<MyKey, string>(MyKey(1, 6), "C"));mp.insert(pair<MyKey, string>(MyKey(0, 4), "D"));mp.insert(pair<MyKey, string>(MyKey(1, 1), "E"));printMp(mp);return 0;
}

??????? 程序的執(zhí)行結果如下所示:

???????? 從上述結果中觀察可以看出,各個元素已經(jīng)按照先id1后id2的規(guī)則進行自動排序了。

http://www.risenshineclean.com/news/5507.html

相關文章:

  • 1688網(wǎng)站上自己做模版專業(yè)營銷團隊公司
  • 阿里云網(wǎng)站如何建設視頻新浪微博指數(shù)查詢
  • 快速 模板 做網(wǎng)站百度網(wǎng)址安全檢測
  • 焦作市住房和城鄉(xiāng)建設局網(wǎng)站百度競價推廣登陸
  • 潛江做網(wǎng)站太原做網(wǎng)站推廣的公司
  • 韶關網(wǎng)站建設網(wǎng)站排名seo
  • 用ps做網(wǎng)站網(wǎng)頁百度排名服務
  • 網(wǎng)站建設崗位工作范圍怎樣注冊網(wǎng)站建立網(wǎng)頁
  • 成都網(wǎng)站外包優(yōu)化公司可以免費發(fā)外鏈的論壇
  • 推進網(wǎng)站集約化建設的作用推廣普通話手抄報一等獎
  • 網(wǎng)絡優(yōu)化報告seo外包網(wǎng)絡公司
  • 做網(wǎng)站下載別人的圖算不算侵權北京網(wǎng)站sem、seo
  • 整站關鍵詞排名優(yōu)化員工培訓
  • 網(wǎng)站的空間的提供商南京網(wǎng)站制作設計
  • 畢業(yè)答辯ppt網(wǎng)站開發(fā)百度大數(shù)據(jù)分析平臺
  • 網(wǎng)頁設計師證書查詢官網(wǎng)google seo怎么優(yōu)化
  • 精美網(wǎng)頁設計源碼網(wǎng)站seo優(yōu)化外包顧問
  • 龍山建設集團有限公司網(wǎng)站云南優(yōu)化公司
  • 怎么知道網(wǎng)站是誰做的b站推廣入口2023
  • 織夢網(wǎng)站怎樣做seo長尾關鍵詞查詢工具
  • 哪里有html5網(wǎng)站建設檢測網(wǎng)站是否安全
  • 網(wǎng)絡服務提供者有哪些新泰網(wǎng)站seo
  • 中山疫情防控最新通知關于進一步優(yōu)化
  • 微網(wǎng)站建設哪家好好看的seo網(wǎng)站
  • 餐飲服務案例100例谷歌seo運營
  • 企業(yè)郵箱在哪里登陸seo技巧分享
  • 畢業(yè)設計做網(wǎng)站想法百度搜索排名機制
  • 怎么用ps做網(wǎng)站超鏈接百度網(wǎng)址大全網(wǎng)站大全
  • 建電子商城網(wǎng)站百度賬號找回
  • 青島的設計公司黑帽seo排名技術