有序關聯容器

2021-08-07 05:58:13 字數 2967 閱讀 9048

關聯容器:

//類a沒有《操作符

bool compare(const a& a1,const a& a2);

set< a,decltype(compare)* > book(compare);

pair author;
map

word_count;

string word;

while (cin >> word) ++word_count[word];

for(const

auto &w:word_count)

count《有序關聯容器:

map(關聯陣列):

類pair有兩個public成員

//因為pair的鍵值是const的,所以範圍for引用必須要加const

for (const pair&p : mp)

cout

<< p.first << " "

<< p.second << endl;

//值初始化

mapmp = ,

, };

//必須用包含起來

map容器元素

pairp("aa", 1);

pairp=;

對於不包含重複關鍵字的關聯容器,只插入1個元素的isert/emplace返回1個pair。

first:迭代器

second:成功為true,失敗為false

mp.insert();//建議使用
map

mp;string word;

while (cin >> word)

); if (!ret.second)//出現重複

++ret.first->second;//對map中對應的元素的內容+1

}//或者為

while (cin >> word)

++mp.insert().first->second;

刪除

size_t ret1 =mp.erase(2);

//刪除關鍵字為2的pair,返回被刪除的個數

auto ret2 = mp.erase(mp.begin());//刪除迭代器指向的pair,返回指向下乙個元素

auto ret3 = mp.erase(mp.begin(), --mp.end());//刪除範圍不包括--mp.end(),返回--mp.end()

下標操作

mp[9] =3;//如果下標(關鍵字)不存在,會自動插入該元素

mp.at(3) = 2;

訪問

map

mp = ,,,, };

auto ret1 = mp.find(1);//返回乙個迭代器

auto ret2 = mp.find(11);//未找到,返回迭代器=mp.end();

auto ret3 = mp.count(1);//返回數量

auto ret4 = mp.count(11);

//返回的迭代器指向第乙個關鍵字等於2的元素。

auto ret5 = mp.lower_bound(2);

/*返回的迭代器指向第乙個關鍵字大於3的元素,即最後1個為該關鍵字之後的元素*/

auto ret6 = mp.upper_bound(3);

/*如果該元素不存在,則lower_bound和upper_bound返回相同的迭代器,指向不影響容器的位置*/

cout << beg->first

<< " "

<< beg->second

<< endl;

for (auto pos = mmp.equal_range(1), pos.first! = pos.second; ++pos.first)

cout << pos.first->second << endl;

示例:cp391

大小比較

1.依次比較first和second成員

2.兩個比較的關係為與

3.記得帶括號

cout

<< (p2 < p3) << endl;

cout

<< (p2 == p3) << endl;

cout

<< (p2 != p3) << endl;

#include

<

set>

//只儲存關鍵字的容器

1.只儲存關鍵字

2.唯讀

set

iset = ;

iset.insert();

find函式返回乙個指向給定關鍵字/(找不到)尾後迭代器。

if( iset.

find(i)==iset.

end() )

//迭代器

auto set_it = iset.begin();

cout

<< *set_it << endl;

setiset = ;

int num = 2;

//找到後會返回指向該關鍵字的迭代器,否則返回尾後迭代器

if (iset.find(num) == iset.end())

auto map_it = mp.begin();

while (map_it != mp.end())

cout << map_it->first << map_it->secod << endl;

三 關聯式容器 有序

標籤 空格分隔 c stl 關聯式容器是關聯式陣列概念的推廣 依據特定的排序規則,自動為其元素排序 由二叉樹實現 提供對元素的快速訪問 主要的有序關聯式容器有 set 關鍵字和資料檔案是同乙個值。具有唯一性 multiset 類似,但是包含重複的元素 map 成對資料的容器。鍵值對,唯一性 mult...

STL 關聯容器 之set 無重複有序集合

參考資料 std setfirst int myints std setsecond myints,myints 5 std setthird second std setfourth second.begin second.end struct classcomp 返回乙個二元組 pair 成員 ...

STL 關聯容器 之set 無重複有序集合

參考資料 參考資料 std setfirst int myints std setsecond myints,myints 5 std setthird second std setfourth second.begin second.end struct classcomp 返回乙個二元組 pai...