map中的散碎知识点

问题:使用map统计一个字符串中的每个字符出现的次数

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

int main()
{
	map<char, int>needs;
	string s;
	s = { "asdwafsada" };
	for (auto x : s)
	{
		needs[x]++; //遍历每个字符
	}
	map<char, int>::iterator it;  //创建一个迭代器   
	for (it = needs.begin(); it != needs.end(); it++)  // 这里能不能使用auto这种进行遍历???
	{
		cout << it->first <<'='<< it->second << endl;
	}
	return 0;
}

​

输出结果:

-------------------------------2022.3.28更新---------------------------------------------

使用c++11  auto遍历map


for(auto x:needs)
{
cout<<x.first<<'='<<x.end<<endl;
}

-------------------------------2022.3.30更新---------------------------------------------

map中的键一但存入是不可以更改的,只能修改指定键对应的值;

要想修改键,只能删除重新写入

插入元素:C++ STL map 类模板中对[ ]运算符进行了重载,即根据使用场景的不同,借助[ ]运算符可以实现不同的操作。当操作对象为 map 容器中已存储的键值对时,则借助 [ ] 运算符,既可以获取指定键对应的值,还能对指定键对应的值进行修改;反之,若 map 容器内部没有存储以 [ ] 运算符内指定数据为键的键值对,则使用 [ ] 运算符会向当前 map 容器中添加一个新的键值对。

获取元素:map 类模板中对[ ]运算符进行了重载,这意味着,类似于借助数组下标可以直接访问数组中元素,通过指定的键,我们可以轻松获取 map 容器中该键对应的值。只有当 map 容器中确实存有包含该指定键的键值对,借助重载的 [ ] 运算符才能成功获取该键对应的值;反之,若当前 map 容器中没有包含该指定键的键值对,则此时使用 [ ] 运算符将不再是访问容器中的元素,而变成了向该 map 容器中增添一个键值对。其中,该键值对的键用 [ ] 运算符中指定的键,其对应的值取决于 map 容器规定键值对中值的数据类型,如果是基本数据类型,则值为 0;如果是 string 类型,其值为 "",即空字符串(即使用该类型的默认值作为键值对的值)。

map 的基本操作函数:

    C++ Maps 是一种关联式容器,包含“关键字/值”对

    begin()                  返回指向 map 头部的迭代器

    clear()                 删除所有元素

    count()                  返回指定元素出现的次数

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

    end()                     返回指向 map 末尾的迭代器

    equal_range()        返回特殊条目的迭代器对

    erase()                   删除一个元素

    find()                     查找一个元素

    get_allocator()      返回map的配置器

    insert()                  插入元素

    key_comp()          返回比较元素key的函数

    lower_bound()     返回键值>=给定元素的第一个位置

    max_size()            返回可以容纳的最大元素个数

    rbegin()                返回一个指向map尾部的逆向迭代器

    rend()                   返回一个指向map头部的逆向迭代器

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

    swap()                 交换两个map

    upper_bound()    返回键值>给定元素的第一个位置

    value_comp()       返回比较元素value的函数

-------------------------------2022.3.31更新---------------------------------------------

map普通的插入都是使用insert,map.insert(map<int,int>(t-i,i)),但是如果想使用vector那样使用push_back,可以map[n].push_back(i),这样也可以完成插入.类似于vec.push_back(),map类型必须是vector或者string

//第一种方式
for(int i=1;i<=n;i++){

        int s;

        cin>>s;

        star[s].push_back(i);//一个i对应着一个S,把i插入star[s]中

    }

//第二种方式
mp[1]=2;  // 1为key  2为value

//第三种方式

mp.insert(pair<int,int> (1,2)); 
//key为1  value为2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tilemap是一种用于构建游戏世界地图的工具,它可以更快速地创建地图,并且避免了传统方式下需要添加大量碰撞体的问题。\[1\]在Unity,Tilemap是通过Grid组件作为瓦片地图的父级来创建的。\[1\]在创建多个层的情况下,可以使用List来保存多个Tilemap的数据结构,以避免与自带的Tilemap类混淆。\[2\] 使用Tilemap可以解决传统方式下手动制作瓦片图片预设的问题,并且提供了可视化界面,如Unity 2017.2.0发布的TilePalette。\[3\]使用图片预设拼接成的地图可能会面临性能问题,特别是对于超大地图。\[3\]Tilemap的出现使得地图编辑器更加方便,但需要注意的是,Tilemap功能在Unity 2017版本之后才可用。\[3\] 总结来说,Tilemap是一种用于构建游戏世界地图的工具,它可以更快速地创建地图,并且避免了传统方式下需要添加大量碰撞体的问题。同时,使用Tilemap还可以解决传统方式下手动制作瓦片图片预设的问题,并提供了可视化界面。然而,需要注意的是,Tilemap功能在Unity 2017版本之后才可用。 #### 引用[.reference_title] - *1* [Tilemap瓦片地图](https://blog.csdn.net/qq_62947569/article/details/128592928)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Unity2017新功能Tilemap地图编辑器的数据拓展和动态生成](https://blog.csdn.net/yye4520/article/details/80391897)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值