当前位置: 首页 > article >正文

Map函数与vector<pair<int,int>>函数的使用方法

一、两者之间的区别:

vector<pair<int,int>>用法和Map函数的异同点:

答:map会对插入的元素按键自动排序,而且不允许键重复;vector的这种用法不会自动排序,而且允许重复。

二、使用命令:

(1)、vector<pair<int,int>>使用方法:

vector<pair<int,int>> 可以使用vector的方法;

使用vector 时,要导入include< vector > 头文件:

初始化:vector<int> result(nums.size(), 0);

        1.push_back 将数据放入vector中

        2.pop_back 去掉末尾元素

        3.at 得到对应下标的元素

        4.begin 得到数组头的指针

        5.end 得到数组的最后一个单元+1的指针

        6.front 返回数组第一个元素

        7.back 返回最后一个元素

        8.max_size 得到vector最大可以是多大

        9.capacity 当前vector分配的大小

        10.size 当前使用数据的大小

        11.resize 改变当前使用数据的大小,如果它比当前使用的大,则填充默认值

        12.reserve 改变当前vecotr所分配空间的大小

        13.erase 删除指针指向的数据项

        14.clear 清空当前的vector

        15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)

        16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)

        17.empty 判断vector是否为空

        18.swap 与另一个vector交换数据

vector<int>::iterator 迭代器名; 常用语遍历vector

注意事项:

        1.要注意end方法,其放回的并不是最后一个元素的指针,而是最后一个元素后一位的指针。

        2.使用每个元素和使用数组时一样,可以直接用下标访问#include <iostream>

        3.迭代器使用示例:

#include <vector>
using namespace std;

int main(int argc, char** argv) 
{
	vector<int> a;
	a.push_back(3);
	a.push_back(4);
	vector<int>::iterator it;
	for(it=a.begin();it!=a.end();it++){
		printf("%d\n",*it);
	}
	return 0;
}

        4、使用sort()函数对vector中的元素排序,要导入algorithm:

#include <algorithm>
vector<int> nums;
sort(nums.begin(),nums.end());  //sort函数默认升序排序

(2)、map命令:

        map 在插入元素时,通过比较键(key)的大小进行排序,实现二叉树自平衡。内部是自动排序的。但是不允许有相同的键。

如果想使用相同的键,那么就要使用 multimap,其可以存放相同的键。

map不能通过迭代器改变键。

基本命令:

map<type,type> strMap; //创建 map

map添加数据的方法:

       1.pair<int,string> value(1,"a"); map.insert(value);

       2.map.insert(pair<type,type>(data,data));

       // value_type是固定的写法,不表示数值类型。

      3.map.insert(map<type,type>::value_type(data,data));

      4.map[1]="a";

erase() //删除一个元素

clear() //删除所有元素

size() //返回map中元素的个数

count() //某个元素出现的次数

find() //查找某个键

empty() //如果map为空则返回true

begin() //指向map头部

end() //指向map最后一个元素的下一个位置

rbegin() //指向map尾部

rend() //指向map头部

swap() //交换两个map

lower_bound() //找出第一个小于等于查找值的位置

upper_bound() //找出第一个大于查找值的位置

map<type,type>::iterator ite; //迭代器

ite->first和ite->second //取出键和值

迭代器:

map<int,const char*>::iterator ite;
//遍历所有元素
for(ite=m.begin();ite!=m.end();++ite)
{
    printf("%d:%s\n",ite->first,ite->second);
}

(3)、multimap命令:

        使用方式和map一致,但其支持重复的键,在插入时不允许使用数组方式的插入,也就是上文方法中添加数据的第4种方式。

示例:

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main(int argc, char** argv)
{
	//声明(int为键,const char*为值)
	multimap<int,const char*> m;
	
	//插入元素
	m.insert(pair<int,const char*>(1,"ONE"));
	m.insert(pair<int,const char*>(1,"one"));
	m.insert(map<int,const char*>::value_type(2,"TWO"));
	m.insert(map<int,const char*>::value_type(2,"two"));
	m.insert(make_pair(10,"TEN"));
	m.insert(make_pair(10,"ten"));
//	m[100]="HUNDRED";
//	m[100]="hundred";   //不支持,会报错
	
	//遍历所有元素
	for(ite=m.begin();ite!=m.end();++ite)
    {
	    printf("%d:%s\n",ite->first,ite->second);
	} 
	
	return 0;
}


http://www.kler.cn/a/384346.html

相关文章:

  • 【CentOS】中的Firewalld:全面介绍与实战应用(上)
  • 【网络原理】关于HTTP状态码以及请求的构造的哪些事
  • 一文了解Android本地广播
  • 定海 - 利用Coraza引擎开发一个防火墙
  • vue组件在项目中的常用业务逻辑(2)
  • 【动态规划 数学】2745. 构造最长的新字符串|1607
  • 将指令输入环境环境变量,用定义的字符串方便快捷调用
  • SpringBoot框架下的资产管理自动化
  • 【ubuntu18.04】使用U盘制作ubuntu18.04启动盘操作说明
  • Node.js——文件上传
  • Sophos | 网络安全
  • Cesium使用flyToBoundingSphere实现倾斜相机视角观察物体
  • VScode建立Java项目
  • Oracle 11g安装教程
  • OceanBase 安装使用详细说明
  • C++ 线程初始化编译报错
  • docker镜像仓库常用命令
  • ios打包私钥证书和profile文件最正式最常用的生成流程
  • linux系统中涉及到用户管理的命令知识
  • AMD显卡低负载看视频掉驱动(chrome edge浏览器) 高负载玩游戏却稳定 解决方法——关闭MPO
  • 代码随想录算法训练营第三十九天|Day39 动态规划
  • 汽车广告常见特效处理有哪些?
  • 备战软考Day05-数据库系统基础知识
  • centos查看硬盘资源使用情况命令大全
  • 深入解析Linux内核中断管理:从IRQ描述符到irq domain的设计与实现
  • 宏集Cogent DataHub: 高效实现风电场数据集中管理与自动化