map multimapc++_黑马C++视频笔记《STL之map/multimap》
/* map/multimap容器
* map/multimap屬于關聯式容器,底層結構是用二叉樹實現。
* - map中所有元素都是pair;
* - pair中第一個元素為key(鍵值),起到索引作用,第二個元素為value(實值);
* - 所有元素都會根據元素的鍵值自動排序;
*
* 優點:可以根據key值(鍵)快速找到value值.
*
* map和multimap的區別:
* - map不允許容器中有重復key值元素;
* - multimap允許容器中有重復key值元素.
*
* map構造:
* - `map m;`,默認構造函數;
* - `map(const map & m);`,拷貝構造函數;
*
* 賦值:
* - `map& operator=(const map &m);`, 重載等號操作符.
*
* 大小和交換:
* - `size();`,返回容器中元素的數目;
* - `empty();`,判斷容器是否為空;
* - `swap(map);`,交換兩個map容器中的數據;
*
* 插入和刪除:
* - `insert(elem);`,在容器中插入元素,多種插入方式:
* map m;
* (1)`m.insert(pair(1, 10));`;
* (2)`m.insert(make_pair(2, 20));`;
* (3)`m.insert(map::value_type(3,30);`;
* (4)`m[4]=40;`
* 在上面四種插入方法中,雖然第4種最簡單,但是第4中容易出錯,如`m[5];`看起來像是在取value值,
* 但是這個操作其實創建了一個新的key-value對,只不過value是用默認值來進行填充的.
* - `clear();`,清除所有元素;
* - `erase(pos);`,刪除pos迭代器所指的元素,返回下一個元素的迭代器;
* - `erase(beg, end);`,刪除區間[beg, end)的所有元素,返回下一個元素的迭代器;
* - `erase(key);`,刪除容器中值為key的元素.
*
* 查找和統計:
* - `find(key);`,查找key是否存在,若存在,返回該鍵的元素的迭代器;若不存在,返回set.end();
* - `count(key);`,統計key的元素的個數.
*
* 排序:與set排序基本相同,我們可以利用仿函數來改變插入數據時候的排序規則.
*/
一個栗子:
//
// Created by shexuan on 2021/1/23.
//
#include
#include
#include
using namespace std;
class myCompare{
public:
// 記住這里加const,不然后報錯
bool operator()(int v1, int v2) const {
// 降序
return v1>v2;
}
};
int main(){
map m;
m.insert(pair(1,10));
m.insert(pair(2,20));
m.insert(pair(3,30));
m.insert(pair(4,40));
m.insert(pair(5,50));
for (map::iterator it=m.begin();it!=m.end();it++){
cout << "first: " << it->first << " second: " << it->second << endl;
}
}
總結
以上是生活随笔為你收集整理的map multimapc++_黑马C++视频笔记《STL之map/multimap》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python123九宫格输入法_《啊哈C
- 下一篇: c java 开发效率高_Java 的开