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

当我在任何不是"*this“的循环上使用基于范围的for循环时,为什么我会得到一个"no match for operator*”?

当您在任何不是"this"的循环上使用基于范围的for循环时,会得到一个"no match for operator"的错误提示。这是因为基于范围的for循环(也称为foreach循环)要求被遍历的对象必须是一个范围(range),而不是一个指针。

在C++中,基于范围的for循环通过迭代器(iterator)来遍历容器中的元素。迭代器是一种用于遍历容器的对象,它提供了访问容器元素的方法。然而,指针并不是一个容器,它只是一个指向内存地址的变量。

当您尝试在一个不是"this"的循环上使用基于范围的for循环时,编译器会尝试寻找适合的迭代器来遍历该对象。由于指针不是一个容器,它没有对应的迭代器,因此编译器无法找到匹配的迭代器,从而导致"no match for operator"的错误。

解决这个问题的方法是,确保您在基于范围的for循环中使用的对象是一个范围(range),而不是一个指针。您可以使用标准库中的容器类(如vector、list、set等)来存储数据,并使用这些容器的迭代器进行遍历。另外,您还可以自定义一个类,并实现适当的迭代器接口,以便在基于范围的for循环中使用。

以下是一些相关的腾讯云产品和产品介绍链接地址,供您参考:

  1. 腾讯云容器服务(Tencent Kubernetes Engine,TKE):提供高度可扩展的容器化应用管理平台,支持快速部署、弹性伸缩和自动化运维。详情请参考:https://cloud.tencent.com/product/tke
  2. 腾讯云云服务器(CVM):提供可靠、安全、灵活的云服务器,支持多种操作系统和应用场景。详情请参考:https://cloud.tencent.com/product/cvm
  3. 腾讯云数据库(TencentDB):提供高性能、可扩展的数据库服务,包括关系型数据库(如MySQL、SQL Server)和NoSQL数据库(如MongoDB、Redis)。详情请参考:https://cloud.tencent.com/product/cdb

请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。

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

相关·内容

深入理解Kubernetes Operator

如果每个集群都是 Kubernetes 集群,则可以使用 Operator 在每个集群中部署相同配置。 为什么使用 Operator使用 Operator 有很多理由。...可以使用 etcd 管理 API “快照”端点进行备份。通过 gRPC 调用它,你将得到一个备份文件。 使用 etcdctl 工具操作备份文件和 etcd 主机上数据目录来实现恢复。...理论,只要 Operator 能够与集群 Kubernetes API 通信,它就可以在任何地方运行。但是,在集群中运行 Operator 通常更容易。...在软件领域,当我们说“基于边缘”,意思是“对事件做出反应”,当我们说“基于条件”,意思是“对观察到状态做出反应”。 例如,如果一个资源被删除,我们可以观察到删除事件并选择重新创建。...因为我们调解函数是“基于条件”,所以我们可以对其加以优化来解决这个问题。当我们将特定资源更新操作放入队列,如果队列中已经有该资源更新操作,那么就将其删除。

1K30

【C++之STL】一文学会使用 string

事实也确实如此,且功利地说一说,在任何招聘C++开发岗位笔试与面试题目中,STL永远不会缺席,而在实际开发中,STL也是贯穿整个C++项目的根脉。...正式因为end()指向最后一个元素一个位置,也就是说end()返回值解引用没有意义,所以在使用迭代器区间进行构造/赋值,都是左闭右开。...对于一个范围集合而言,由程序员来说明循环范围是多余,有时候还会容易犯错误。 因此C++11中引入了基于范围for循环。...for循环括号由冒号":"分为两部分,第一部分是范围内用于迭代变量,第二部分则表示被选代范围,自动迭代,自动取数据,自动判断结束。...范围for不是 string 类特权,事实只要类支持迭代器,且命名为 iterator 和 const_iterator ,就可以自动地支持范围for。

6210
  • GitOps是皇帝新衣吗

    在这篇文章中,我将解释为什么我会这么想。GitOps 让我想起了一个关于真实与想象古老安徒生童话。皇帝宣称他穿着衣服,但是否有可能他实际什么都没穿?...通常,Operator 从 Git 存储库读取配置,对其应用转换,然后将其推送给 Kubernetes API 服务器。这正是部署工具在基于推送模型中所做!...在我们开始讨论协调无文档记录变更之前,我们需要首先问一下为什么会出现这些变更。也许我们不希望它们得到协调?在某些情况下,我们需要进行手动变更,并且不希望环境被自动修复。...10 地图并不是真正疆域 我们倾向于认为 Git 配置库等同于变更,但实际,这些静态定义与动态 DevOps 自动化中实际发生情况之间存在差距。...当发生事故,我们真正需要是了解事情实际变化情况。现代 GitOps 一个大问题是,开发者和运维团队对实际发生变更几乎没有真正记录。我们需要明白是,期望状态并不是实际状态。

    78810

    ES2020新特性

    日常开发中,当需要访问嵌套在对象内部好几层属性,可能就会得到臭名昭著错误Uncaught TypeError: Cannot read property...,这种错误,让整段程序运行中止。...空位合并操作符(Nullish coalescing Operator当我们查询某个属性,经常会给没有该属性就设置一个默认值,比如下面两种方式: let c = a ?...String.prototype.matchAll 如果一个正则表达式在字符串里面有多个匹配,现在一般使用g修饰符或y修饰符,在循环里面逐一取出。...,超出这个范围整数计算或者表示会丢失精度。...你可以在BigInt使用与普通数字相同运算符,例如 +, -, /, *, %等等。 创建 BigInt 类型值也非常简单,只需要在数字后面加上 n 即可。例如,123 变为 123n。

    61020

    sed & awk 第二版学习(五)—— 高级 sed 命令

    为了修正第二个问题,按如下方式使用 N 命令应该是安全: $!N 但这样又会多引入一次第一个问题。最好解决方案就是当这个模式能在一行匹配避免读取下一行。...这个循环目的是只输出模式空间第一行,然后返回到脚本顶端将所有命令应用于模式空间第二行。没有这个循环,当执行脚本中最后一个命令,模式空间中这两行都将被输出。...与 grep 一样,该程序一个必不可少部分是只打印匹配模式行,但它不是使用 -n 选项来抑制默认行输出,而是构建了一个输入/输出循环,用来控制何时输出或不输出。...使用 sed 正常控制流,下一个输入行被读入模式空间,并且控制返回到脚本顶端。每次尝试匹配模式,都可以用相同方式使用分支。...如果匹配成功,再次使用 g 命令从保持空间(保护了换行符和其前面的空格)中得到副本,并用不带标签 b 命令转到脚本底部以打印它。

    11510

    日拱一卒,伯克利太有创意了,用Python解释Python

    计算机本身使用硬件来解释机器码(一系列0和1代表基础运行执行比如相加、从内存读取信息等) 当我们谈论解释器时候,有两种语言在起作用: 被解释/被实现语言,在这个实验当中,你将会使用PyCombinator...实际,这节课我们将会使用Python实现一个小版本Python(PyCombinator)。这种idea被称为元循环评估。...中,通过三个步骤实现对call表达式evaluate: 在当前环境中evaluate operator 在当前环境中evaluate operands 将operator得到结果(是一个函数)应用在...但实际还有一种情况我们没有处理。你能想到一个简单没有定义计算吗?(比如说和除法相关)尝试着看看会发生什么,这很坑爹不是吗?我们得到了一大串报错,并且退出了解释器。...我们得到一个简短报错,告诉我们x没有被定义,但我们仍然可以继续使用解释器。这是因为我们代码handle了NameError异常,防止它让我们程序崩溃。

    66820

    模拟实现C++中string类(详细解析)

    范围for 其实范围for,看着好像很高大一样,我们在用时候,不知道它为什么能够识别到循环起点和重点,为什么有这样功能。这里揭秘:范围for其实就是迭代器分身!...它相当于宏替换一样,当我们写出范围for后,在编译代码时候,编译器就会将其展开,变成了使用迭代器来实现循环代码一样了。...(),也就是将函数名称改一改,接下来我们就会发现,虽然while循环依然可以使用范围for用不了了。  ...这也就很好地解释了我上面所讲范围for类似于宏替换,将使用迭代器循环替换成了范围for。...如果我们给出例子是这样  根据上面代码,最后将第一个位置w挪到第二个位置后,x就会插入到下标为0这个位置,但实际.......我们一运行,陷入了死循环为什么

    86020

    ES2020

    ,按需加载、懒加载都不是问题 模块标识支持变量传入,可动态计算确定模块标识 不仅限于module,在普通script中也能使用 注意,虽然长像函数,但**import()实际是个操作符**,因为操作符能够携带当前模块相关信息...Operator 特性填充默认值: 'string'.match(/(sing)/)?....注意,matchAll()不像match()一样返回数组,而是返回一个迭代器,对大数据量场景更友好 for-in 遍历机制 JavaScript 中通过for-in遍历对象 key 顺序是不确定...属性名不会重复出现(一个属性名最多出现一次) 目标对象整条原型链属性都能遍历到 具体见13.7.5.15 EnumerateObjectProperties globalThis 最后一个新特性是...为什么不叫global?是因为global可能会影响现有的一些代码,所以另起一个globalThis避免冲突

    51820

    C++智能指针

    在对象构造获取资源,接着控制对资源访问使之在对象生命周期内始终保持有效,最后在对象析构时候释放资源。借此,我们实际把管理一份资源责任托管给了一个对象。...如果引用计数是0,就说明自己是最后一个使用该资源对象,必须释放该资源; 如果不是0,就说明除了自己还有其他对象在使用该份资源,不能释放该资源,否则其他对象就成野指针了。...那么又有人说,我们将引用计数变为静态不就行了吗,引用计数也不能使用静态成员变量来实现,静态成员确实让全局看得到,但是当我们新构造了一个对象,也就是新生成了一个对象,它会默认初始化引用计数,将全局引用计数改为...,当我使用引用计数时候,直接通过指针进行操作即可。...我们来逐步分析一下为什么会导致循环引用,以及其是什么:   如果这两条语句只有任何一条语句执行,都不会报错,就如上图,当n1指向n2,n2引用计数++, 假设n2生命周期先到,那么n2 先析构,引用计数

    8510

    Kubernetes 分布式系统演化

    这意味着它们彼此之间可以使用 localhost、基于文件系统异步方式或者其他 IPC 机制进行通信。 pod 给我们另外一个保证是关于生命周期,pod 中所有的容器并不是平等。...它是基于一种叫做调谐循环(reconciliation loop)机制实现。调谐循环理念就是将期望状态驱动到实际状态。在 Kubernetes 中,有很多功能都是基于这种机制实现。...例如,当我想要两个 pod 实例时候,这就是系统期望状态。Kubernetes 会有一个持续运行控制循环,它会检查是否有两个 pod 实例在运行。...使用 Knative 服务定义完工作负载之后,就会得到一个具备无服务器特性部署(deployment)。我们不需要建立和运行实例,请求抵达,它可以从零开始启动。...在我们运行时之外,会有相当多智能处理,但是它们都在 operator 中,所有的这一切运行都非常快。为什么我将其称之为一个绑定方面的新趋势呢?

    50720

    【前端技能树-需要避免坑】Javascript 开发者容易在花田里犯

    一切都取决于你开发/生产环境。你得到这个错误原因是因为,当你调用 setTimeout() ,你实际是在调用 window.setTimeout()。...每一秒钟,当我们调用replaceThing ,它都会保存一个对 priorThing 中先前 theThing 对象引用。...但我们仍然不认为这是一个问题,因为每次通过先前引用 priorThing 将被解除引用。而且,它只在replaceThing 主体和未使用函数中被引用,而未使用函数实际从未使用过。...换句话说,当且仅当 GC 认为对象不可访问,对象才会从内存中删除。不幸是,很容易得到不再使用“僵尸”对象,但 GC 仍然认为它们是可访问。...不使用严格模式并不是一个真正“错误”,但它使用越来越受到鼓励。 以下我总结了严格模式一些主要好处: 使调试更容易。

    19211

    第6章 | 表达式 | 优先级,块与分号,生命,if match

    一个块生成一个值,并且可以在任何需要值地方使用: let display_name = match post.author() { Some(author) => author.name(),...正如第 2 章提到,当块最后一行不带分号,就以最后这个表达式值而不是通常 () 作为块值。...编译器可以使用跳转表来优化这种 match,就像 C++ 中 switch 语句一样。当 match 每个分支都生成一个常量值,也会应用与 C++ 类似的优化。...Rust 会从第一项开始依次根据每个模式检查给定 value。当模式能够匹配,对应 expr 会被求值,而当这个 match 表达式结束,不会再检查别的模式。至少要有一个模式能够匹配。...各种范围都可以与 for 循环一起使用,因为 Range 是一种可迭代类型,它实现了 std::iter::IntoIterator 特型(参见第 15 章)。

    10910

    LeetCode50,一题学会快速幂

    而针对本题算法就是快速幂。 快速幂算法本质也是二进制算法变形,需要基于我们对二进制充分理解,某种程度上来说它和多重背包问题当中二进制拆分解法比较近似。...第一个问题:我们使用快速幂原因是什么? 这个问题很好回答,当然是因为快啊,不然的话我们用循环计算幂不行么。但是为什么快速幂就快呢?为什么它比循环快呢?...顺着这个思路,我们眼前世界清楚了很多。 原本我们求解方法就是通过循环,每次循环都乘上一个x,循环n次之后得到结果。...所以我们先得到了,我们把它放在一边之后还剩下了7,我们再来凑7,又找到了4,于是再放到一边,还剩下3,我们再来凑3……如此循环往复直到凑齐了n为止,n是一定可以这样凑到,因为这本质就是一个转化成二进制过程...可能你会觉得奇怪,为什么非要用二进制而不是三进制、四进制呢,不是更快吗?

    53620

    Pwnable.tw刷题之calc

    函数开始同样使用了canary方式保护栈空间,之后又分配了100字节空间给一个数组operator[100],这个数组作用是保存所有的操作符。 ?...比如“7+9-5”这样一个运算表达式,当我们处理到“-”operator[seqopr]保存就是“+”。...若当前操作符不是表达式一个操作符,那么就进入if条件。该if条件作用,就是保存当前操作符至operator数组中,并进行之前操作符所对应那部分运算。...这样的话,initpool[0]值在解析下一个操作符之前就还是0,而不是1,当第一次进入eval函数,我们运算场景就出现了一个不符合运算条件情况: 一个运算符和仅有的一个操作数 比如我们输入“+...回到我们开始问题,为什么canary不足以保证栈数据被篡改?

    1.9K70

    通过编写扫雷游戏提高你 Bash 技巧

    我在编程教学方面不是专家,但当我想更好掌握某一样东西,会试着找出让自己乐在其中方法。比方说,当我想在 shell 编程方面更进一步,我决定用 Bash 编写一个扫雷游戏来加以练习。...接下来,我会用列(0-9)和行(a-j)显示出游戏界面,并且使用一个 10x10 矩阵作为雷区。(M[10][10] 是一个索引从 0-99,有 100 个值数组。)...我们先横着显示 [a-j] 然后再将 [0-9] 行号显示出来,我们会用这两个范围,来确定用户排雷的确切位置。 接着,在每行中,插入列,所以是时候写一个 for 循环了。...这一循环管理着每一列,也就是说,实际是生成游戏界面的每一格。我添加了一些辅助函数,你能在源码中看到它完整实现。...#结束 col 循环 done 最后,为了保持游戏界面整齐好看,我会在每行用一个竖线作为结尾,并在最后结束行循环: printf '%s\n' "|" # 显示出行分隔符 printf '

    1.2K20

    ElasticSearch权威指南:深入搜索(

    这在逻辑是能说通,因为一个数字不能比其他数字 更 适合存于某个相同范围。结果只能是:存于范围之中,抑或反之。同样,对于结构化文本来说,一个值要么相等,要么不等。没有 更似 这种概念。...但字符串却并非如此,要想对其使用范围过滤,Elasticsearch 实际是在为范围每个词项都执行term 过滤器,这会比日期或数字范围过滤慢许多。...当我们索引新文档,只需将那些新文档加入已有 bitset,而不是对整个缓存一遍又一遍重复计算。和系统其他部分一样,过滤器是实时,我们无需担心缓存过期问题。 1....一旦谈论相关性或分析这两个方面的问题,我们所处语境是关于查询不是过滤。 1. 基于词项&基于全文 所有查询会或多或少执行相关度计算,但不是所有查询都有分析阶段。...8.被破坏相关度 在讨论更复杂 多字段搜索 之前,让我们先快速解释一下为什么只在主分片 创建测试索引 。

    4.3K31
    领券