• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
数据结构(1) pair和map使用

 

 

 

 

 

#include <iostream>

#include <thread>

#include<map>

#include <algorithm>

#include <vector>

#ifdef lniux 
#include <unistd.h> //usleep(1000000);
#else
#include <Windows.h>
#include <WinBase.h>
#endif



using namespace std;




void test1_pair() {
	// pair测试
	typedef pair<string, string> Author;
	Author proust("March", "Proust");
	cout << "pair 测试  first:" << proust.first << "   second:  " << proust.second << endl;

}

void test1_insert() {

	//第一种:用insert函数插入pair数据:
	map<int, string> my_map;
	my_map.insert(pair<int, string>(1, "first"));
	my_map.insert(pair<int, string>(2, "second"));

	my_map.insert(map<int, string>::value_type(3, "2"));
	my_map.insert(map<int, string>::value_type(4, "3"));

	my_map[5] = "5";
	my_map[6] = "6";

	//std::cout << my_map[1] << endl;
	//std::cout << my_map[2] << endl;

	map<int, string>::iterator it;
	for (it = my_map.begin(); it != my_map.end(); it++)
		cout << "map测试 first:  " << it->first << " second: " << it->second << endl;




}

void test2_find() {

	//查找 判断关键字是否出现

	map< string, int> myfing_map;
	myfing_map.insert(pair<string, int>("dongdong", 21));
	myfing_map.insert(pair<string, int>("xixi", 22));
	myfing_map.insert(pair<string, int>("lala", 23));
	map<string, int>::iterator it1;
	it1 = myfing_map.find("dongdong");
	if (it1 != myfing_map.end())
		cout << "Find, the value is " << it1->second << endl;
	else
		cout << "Do not Find" << endl;

}

void test4_erase()
{
	map<int, string> my_map;
	my_map.insert(pair<int, string>(1, "one"));
	my_map.insert(pair<int, string>(2, "two"));
	my_map.insert(pair<int, string>(3, "three"));
	//如果你要演示输出效果,请选择以下的一种,你看到的效果会比较好
	//如果要删除1,用迭代器删除
	map<int, string>::iterator it;
	it = my_map.find(1);
	my_map.erase(it);                   //如果要删除1,用关键字删除
	int n = my_map.erase(1);            //如果删除了会返回1,否则返回0
	//用迭代器,成片的删除
	//一下代码把整个map清空
	my_map.erase(my_map.begin(), my_map.end());
	//成片删除要注意的是,也是STL的特性,删除区间是一个前闭后开的集合
	//自个加上遍历代码,打印输出吧
	
}




bool cmp(pair<string, int> a, pair<string, int> b) {
	return a.second < b.second;
}

void test3_sort() {

	// 排序
	map<string, int> ma;
	ma["Alice"] = 86;
	ma["Bob"] = 78;
	ma["Zip"] = 92;
	ma["Stdevn"] = 88;
	//vector< pair<string, int> > vec(ma.begin(), ma.end());

	vector< pair<string, int> > vec;
	for (map<string, int>::iterator it = ma.begin(); it != ma.end(); it++)
		vec.push_back(pair<string, int>(it->first, it->second));

	sort(vec.begin(), vec.end(), cmp);
	for (vector< pair<string, int> >::iterator it = vec.begin(); it != vec.end(); ++it)
	{
		cout << it->first << " " << it->second << endl;

	}


}



int main(int argc, char** argv)
{

	test1_pair();
	test1_insert();
	test2_find();
	test3_sort();
	test4_erase();

}

  

posted on 2022-11-29 11:06  MKT-porter  阅读(59)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3