首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么不允许这个地图<int,auto>?

这个问答内容涉及到C++编程语言中的模板和数据类型的问题。在C++中,模板是一种泛型编程的工具,可以用于创建通用的数据结构和算法。而数据类型是变量或表达式的属性,用于确定其存储空间和操作方式。

在C++中,可以使用模板来创建具有不同数据类型的容器类,例如vector、map等。在这个问答中,提到了一个地图(map)容器,其键类型为int,值类型为auto。auto是C++11引入的关键字,用于自动推断变量的类型。

然而,不允许使用<int, auto>作为地图容器的类型。这是因为在C++中,模板的类型参数必须是明确的,不能使用auto来代替。auto关键字只能在变量声明时使用,用于让编译器自动推断变量的类型。

如果想要创建一个键类型为int,值类型为自动推断的地图容器,可以使用以下方式:

代码语言:cpp
复制
std::map<int, decltype(value)> myMap;

其中,value是一个已知的变量,编译器可以根据其类型推断出值类型。

总结起来,不允许使用<int, auto>作为地图容器的类型是因为C++模板要求类型参数必须是明确的,而auto关键字只能在变量声明时使用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

趣玩算法--OpenCV华容道AI自动解题

微卡智享 数字华容道的路径规划算法是也是基于A星算法原理实现的,区别就是A星算法是允许斜线移动,在计算当前要规划的点时,需要计算周围8个邻近点,而数字华容道行动时不允许走斜线,所以只能计算上下左右四个直线方向的点...加入地图障碍、开户列表、关闭列表 定义了一个开启列表和一个关闭列表,其中开启列表中存放着还未计算的所有点,关闭列表中存放着已经计算过的点。...每次从开启列表中取出到终点体力最少的点,都存放到关闭列表中,还有找出这个点的上下左右可移动的点,当这几个点中超过地图范围或是在障碍点中,以及已经在关闭列表中时,就不做为可移动的点了,这样可以减少循环的计算量...DirectFirst = DirectFirst::Up; //初始化地图 void InitSites(vector> _sites); //获取到路径 vector...openList.empty()) { auto resPos = openList.front(); for (auto& pos : openList) if (pos

86140

C++变量的存储说明符和cv-限定符

存储说明符 存储说明符有下面这些: auto register static extern mutable auto修饰符的变量时自动变量,如果变量没有任何修饰符,默认就是自动变量,其作用域在函数内部。...),要么用static声明来隐藏这个大全局global(此时是新的变量) static int one_file = 50;// 在函数外使用static声明,只在文件内各个函数可使用 void func...person me = {"Cloudox", 24}; strcpy(me.name, "Cloud");// 这是不允许的,因为结构体person的实例me是用const修饰的 me.age++;...为什么会发生变化呢?因为假设你指针指向某个硬件位置,其中包含来自串行端口的时间或信息,这就有可能硬件本身改变它,而不是你程序去改变它。 那为什么要告诉程序它可能变化呢?...因此volatile关键字实际上也就是告诉编译器,不要对这个变量做这种优化。

58110

chat集群聊天室项目 代码+讲解(二):业务模块

文章目录 项目简单架构图 1.0版本:单服务器 2.0版本,横向扩充,负载均衡 3.0版本,调优 代码 讲解 为什么要设置单例 MsgHandler 的设计 业务中为什么不直接对接数据库?...我又想了一下,这个架构有问题,先留着吧,有兴趣的朋友可以看看哪里有问题。 代码 闲话不多说,直接上代码。 我精简化了一下,业务代码基本千篇一律的,没什么好看的。...msgid){ //日志记录 auto it = _msgHanderMap.find(msgid); if(it == _msgHanderMap.end()){...user.getpassword() == pwd) { if (user.getstate() == "online") { // 该用户已经登录,不允许重复登录...那为什么不在ChatServer里面放一个Chatservice chatservice_ 对象呢? 那为什么就非要加上这么一层耦合呢?

77530

Android 天气APP(二十四)地图天气(上)自动定位和地图点击定位

然后就可以来显示地图了,以我的性格,那肯定是新建一个页面来做这个的。...//透明状态栏 StatusBarUtil.StatusBarLightMode(context);//状态栏黑色字体 } @Override public int...推荐一个图标网站,我APP上的图标基本都是在这个上面找的,真心不错。 iconfont 这个地图的图标也是在上面找的。可以看到右边已经有一个更多功能的按钮了,我在左边加一个地图的。...地图确实已经看到了,但是为什么是在北京呢?因为这是默认的初始位置,所以需要自己去定位到当前位置。...当然这个事件肯定不是常规的View.OnClickListener,而是百度地图已经封装好的点击方法。

1.9K20

SQL笔记(1)——MySQL创建数据库

INT NOT NULL, -- 教师ID,外键,参考教师表中的ID字段 credit DOUBLE NOT NULL -- 课程学分,不允许为空 ); 这个命令是用来创建一个名为 course...具体来说,该表包含以下列: id:课程ID,类型为 INT,是主键列,并且使用 AUTO_INCREMENT 属性,表示自增长; name:课程名称,类型为 VARCHAR(50),不允许为空; teacher_id...:教师ID,类型为 INT不允许为空,是外键列,参考了教师表中的 ID 列; credit:课程学分,类型为 DOUBLE,不允许为空。...INT不允许为空,是外键列,参考了学生表中的 ID 列; course_id:课程ID,类型为 INT不允许为空,是外键列,参考了课程表中的 ID 列; score:学生得分,类型为 DOUBLE...(50) NOT NULL -- 教师职称,不允许为空 ); 在 MySQL 数据库中创建一个名为 teacher 的表,该表包含以下列: id:教师ID,类型为 INT,是主键列,并且使用 AUTO_INCREMENT

3K20

c++ primer2 变量和基本类型。

使用extern关键字可以只表示声明而非定义,比如extern int j;就指标是声明j,在后面的代码中还可以定义int j=0;,这样都是正确的,特别的,任何进行了显式初始化的声明即成为定义,且函数内部不允许使用这样的...但是不允许用将普通的引用绑定到常量上:const int &r1=4; int &r2=r1*4; 这样是不合法的。...auto会忽略顶层const,底层会保留 int i=0, &r=i; auto a=r; //a是一个整数 const int ci=i; &cr=ci; auto b=ci;...auto e=&ci; // e是指向整数常量的指针,ci是一个常量,这个是一个底层cosnt,并不会被忽略。...//如果想要希望推断出来的auto类型是一个顶层cosnt,所以需要明确指出: cosnt auto f=ci; //推断出来的是cosnt intint 是从ci推断出来的,而cosnt是限定的

50610

const 使用总结

const关键字是用于定义一个不该被改变的对象,它的作用是告诉编译器和其他程序员不允许修改这个对象的值或者状态。...// 错误,会丢失*cp的const限制使用auto自动类型推导时,auto会忽略掉顶层的const,而底层的const则会保留下来:int i = 0;const int ci = i;const int...&cr = ci;auto a = ci;// a的类型是intauto b = cr;// b的类型是int,只是拷贝cr引用对象的值auto c = &i;// c的类型是int*auto d =...&ci;// d的类型是const int*,底层const不能忽略const auto e = cr;// 当你希望auto推导出来的类型是const时,明确指出当auto和引用一起使用时,初始值中的顶层...const属性会被保留,因为引用是绑定这个对象的,相当于是这个对象的别名,所以这个对象的const属性应该要保留:int i = 0;const int ci = 512;auto &r1 = i;//

7610

cocos3.X 惯性滑动

1 主要思路 实现手指拖动地图后,手指离开地图后,地图距离会向着手指的方向移动一段距离: 1.在滑动中把每个点放入到容器中 2.滑动结束根据最后一个点与倒数第二点的设定x,y方向上的位移 3.根据摩擦系数...,依次减小位移,直至小到一定程度 2 详细设计 2.1 给地图精灵绑定触摸监听 auto listener1 = EventListenerTouchOneByOne::create();//创建一个触摸监听...2.3触摸移动 void HelloWorld::onTouchMoved(Touch* touch, Event* event) { m_bDrag = true; auto target =...event->getCurrentTarget()); target->setOpacity(255); if (m_bDrag == true) { m_bDrag = false; int...当位置差绝对值大于一定量时,移动精灵,位置差再乘上摩擦系数,直到位置差小于这个一定量精灵将停止移动。

19430

Java总结之映射家族--Map概览

所谓映射便是一一对应,map英语中是[地图]的意思,这也很好的反应了映射的概念。 即:地图上的某一点都会对应现实的某一点,说是映射可谓恰到好处。...如果你发现一个字典的索引有两个[apple],你肯定会认为这个字典有问题。或者一个地图上查询两个[合肥],恐怕你也不会相信这张地图是好的。...相关话题: 哈希碰撞相关问题:什么是哈希碰撞,如何降低哈希碰撞几率,哈希碰撞后的解决方案 HashMap底层实现问题:链表数组+红黑树数组,为什么要使用这样的数据结构 由此可以引出链表与数组的比较...的Node(链表)数组, 2.当hash冲突时,该元素会插入到与其冲突的链表尾 3.当链表长度为8并且数组长度大于40时,链表转为红黑树 4.当树元素小于等于6时会解除树化,分割成链表 为什么链表要化为红黑树...实现 扩容方式 null键值 父类 HashMap 否 数组+单链表+红黑树 oldCap * 2 允许 AbstractMap Hashtable 是 数组 + 链表 oldCap * 2 + 1 不允许

61540
领券