C++笔记 STL map容器基本操作 排序
map默认按照key进行升序排序,和输入的顺序无关。
为了实现快速查找,map内部本身就是按序存储的(比如红黑树)。在我们插入<key, value>键值对时,就会按照key的大小顺序进行存储,其中key的类型必须能够进行 < 运算,且唯一,默认排序是按照从小到大便利记忆联想到需要支持小于运算。
1、使用迭代器进行遍历打印
-
void printMap1(map<int, int, MyCompare> &m)
-
{
-
for (map<int, int>::iterator it = m.begin(); it != m.end(); it )
-
{
-
cout << "key=" << it->first << "\t" << "value=" << it->second << endl;
-
}
-
cout << endl;
-
}
2、下面展示默认排序
-
void test02()
-
{
-
-
map<int, int, MyCompare> m; //利用仿函数
-
m.insert(pair<int, int>(1, 10));//匿名对组
-
m.insert(pair<int, int>(2, 20));
-
m.insert(pair<int, int>(3, 30));
-
m.insert(pair<int, int>(4, 40));
-
m.insert(pair<int, int>(5, 50));
-
printMap1(m);
-
-
}
测试结果
3、下面展示利用仿函数进行降序排列
-
//利用仿函数
-
class MyCompare
-
{
-
public:
-
bool operator()(int v1, int v2)
-
{
-
-
return v1 > v2;// 降序排列
-
//return v1 < v2;// 升序排列
-
-
}
-
};
-
void test02()
-
{
-
-
map<int, int, MyCompare> m; //利用仿函数
-
m.insert(pair<int, int>(1, 10));//匿名对组
-
m.insert(pair<int, int>(2, 20));
-
m.insert(pair<int, int>(3, 30));
-
m.insert(pair<int, int>(4, 40));
-
m.insert(pair<int, int>(5, 50));
-
printMap1(m);
-
-
}
测试结果
总代码
-
/* 2022 03 29 */
-
// 3.9.6 map容器排序
-
// 学习目标:map容器默认排序规则为按照key值 从小到大进行排序,掌握如何改变排序规则
-
// 主要技术点:利用仿函数,可以改变排序规则
-
-
-
-
using namespace std;
-
-
// 打印 map容器
-
void printMap(map<int, int> &m)
-
{
-
for (map<int, int>::iterator it = m.begin(); it != m.end(); it )
-
{
-
cout << "key=" << it->first << "\t" << "value=" << it->second << endl;
-
}
-
cout << endl;
-
}
-
-
-
-
-
//利用仿函数
-
class MyCompare
-
{
-
public:
-
bool operator()(int v1, int v2)
-
{
-
-
return v1 > v2;// 降序排列
-
//return v1 < v2;// 升序排列
-
-
}
-
};
-
void printMap1(map<int, int, MyCompare> &m)
-
{
-
for (map<int, int>::iterator it = m.begin(); it != m.end(); it )
-
{
-
cout << "key=" << it->first << "\t" << "value=" << it->second << endl;
-
}
-
cout << endl;
-
}
-
void test01()
-
{
-
-
map<int, int> m;
-
m.insert(pair<int, int>(1, 10));//匿名对组
-
m.insert(pair<int, int>(2, 20));
-
m.insert(pair<int, int>(3, 30));
-
m.insert(pair<int, int>(4, 40));
-
m.insert(pair<int, int>(5, 50));
-
printMap(m);
-
-
}
-
void test02()
-
{
-
-
map<int, int, MyCompare> m; //利用仿函数
-
m.insert(pair<int, int>(1, 10));//匿名对组
-
m.insert(pair<int, int>(2, 20));
-
m.insert(pair<int, int>(3, 30));
-
m.insert(pair<int, int>(4, 40));
-
m.insert(pair<int, int>(5, 50));
-
printMap1(m);
-
-
}
-
int main()
-
{
-
-
-
test01();
-
test02();
-
system("pause");
-
return 0;
-
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggecji
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01