網站首頁 編程語言 正文
允許重復關鍵字的容器的名字開中都有包含單詞multi,不保持關鍵字按順序存儲的容器的名字都以unordered開頭。
使用關聯(lián)容器
(1)經典的map程序
單詞計數程序
map<string, size_t>word_count;
string word;
while (cin >> word)
++word_count[word];
for (const auto& w : word_count)
cout << w.first << " occurs " << w.second << " 次 " << endl;
(2)set的使用
//忽略exclude中的單詞進行計數
map<string, size_t>word_count;
set<string> exclude = { "the","but" };
string word;
while (cin >> word)
if(exclude.find(word)==exclude.end())
//find返回一個迭代器,指向該關鍵字,若不存在,則返回尾后迭代器
++word_count[word];
for (const auto& w : word_count)
cout << w.first << " occurs " << w.second << " 次 " << endl;
關聯(lián)容器概述
定義關聯(lián)容器
(1)mutiset使用的例子:
vector<int> v;
for (int i = 0; i != 10; i++)
{
v.push_back(i);
v.push_back(i);
}
set<int> is(v.begin(), v.end());
multiset<int> ms(v.begin(), v.end());
cout << is.size() << endl; //輸出10
cout << ms.size() << endl; //輸出20
cout << v.size() << endl; //輸出20
pair類型
創(chuàng)建一個pair時,我們必須提供兩個類型。
pair<string,int> p;
其中兩個成員分別命名為first和second,可以采用成員訪問符訪問他們。
創(chuàng)建pair對象的函數
有一個函數需要返回一個pair,我們可以對返回值進行列表初始化
pair<string,int> process(vector<string> &v)
{
//處理v
if(!v.empty())
return { v.back(),v.back().size()} //列表初始化
else
return pair<string,int>(); //隱式構造返回值
}
關聯(lián)容器操作
關聯(lián)容器迭代器
map<string,int> v;
auto map_it=v.begin() //獲取一個指向v中一個元素的迭代器
//map_it是指向一個pair<const string,size_t>對象的引用
cout<<map_it->first; //打印此元素的關鍵字
cout<<map_it->second //打印此元素的值
(1)set的迭代器是const的
set的迭代器只允許只讀訪問set中的元素,set中的關鍵字也是const的,可以用一個set迭代器來讀取元素的值,但不能修改
set<int> s = { 0,1,2,3,4,5,6 };
set<int>::iterator it = s.begin();
if (it != s.end())
{
*it = 42; //無法修改
cout << *it << endl;
}
添加元素
關聯(lián)容器的insert成員向容器中添加一個元素或一個元素范圍,由于map和set包含不重復的關鍵字,因此插入一個存在的元素對容器無影響。
vector<int> ivec={2,4,6,8}
set<int> set2;
set2.insert(ivec.begin(),ivec.end())
set2.insert({1,3,5,7})
insert有兩個版本,分別接受一對迭代器,或是一個初始化器列表。
(1)向map添加元素
m.insert({word,1})
(2)insert的返回值
對于不包含重復關鍵字的容器,添加單一元素的insert版本返回一個pair,pair的first成員是一個迭代器,指向具有給定關鍵字的元素,second成員是一個bool的值,指出元素是插入成功還是已經存在于容器中,如果關鍵字已在容器中,則insert什么也不做,且返回值中的bool部分為false,若關鍵字不存在,元素被插入到容器中,且bool值為true。
刪除元素
關聯(lián)容器定義了三個版本的erase,可傳遞一個迭代器或一個迭代器對來刪除一個元素或一個元素范圍,指定元素被刪除后返回void。
另一個版本沒接收一個key_type參數,此版本刪除所有匹配給定關鍵字的元素,返回實際刪除的元素數量。
map的下標操作
map的下標運算符接受一個索引(即關鍵字),獲取與此關鍵字相關聯(lián)的值,若關鍵字不在map中,則會為其創(chuàng)建一個元素并插入到map中,關鍵值將進行值初始化。
訪問元素
c.find(k):返回一個迭代器,指向第一個關鍵字為k的元素,若k不在容器中,則返回尾后迭代器
c.count(k):返回關鍵字等于k的元素數量,對于不允許重復關鍵字的容器,返回值永遠是0或1
關鍵容器還提供兩個特殊的函數,lower_bound和upper_bound,lower_bound返回的迭代器將指向第一個具有給定關鍵字的元素,而upper_bound返回的迭代器指向最后一個匹配給定關鍵的元素之后的位置。
原文鏈接:https://blog.csdn.net/weixin_42375706/article/details/125492448
相關推薦
- 2023-03-22 tkinter動態(tài)顯示時間的兩種實現方法_python
- 2022-06-06 Python實現文字pdf轉換圖片pdf效果_python
- 2022-01-17 element日期時間選擇器提交時間格式不準確
- 2022-06-28 詳解Python中遞歸函數的原理與使用_python
- 2022-12-21 C語言中continue的用法詳解_C 語言
- 2024-01-12 如何理解 Elasticsearch 中的 Indices、Types、Documents、Fiel
- 2022-11-03 C#事件中的兩個參數詳解(object?sender,EventArgs?e)_C#教程
- 2024-07-13 Spring AOP 基于注解的方式實現切面遍程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支