C++ 错误:转换为非标量类型 [关闭]

2024-03-16

我似乎在以下代码段中遇到了一个特殊的错误(忽略多余的头文件和空白的 main 函数,我只是想将此问题隔离到可编译的 .cpp 文件中以便在此处发布)。它表示从“[我定义的某些类型]”到非标量类型“[我定义的某些类型]”的错误转换。

这个特定示例中的代码应该将一组字符串列表作为一个输入参数(命名为输入),并将对字符串列表的引用作为另一个(命名为输出),并计算其中的最长公共前缀列表。输入中的列表并将结果存储到输出中。

编译器错误消息(也作为注释包含在相应行中)是这样的:

lcp.cpp:28:47:错误:从‘转换std::list<std::basic_string<char> >::const_iterator {aka std::_List_const_iterator<std::basic_string<char> >}' 到非标量类型 'std::list<std::basic_string<char> >::iterator {aka std::_List_iterator<std::basic_string<char> >}’要求

这是实际的程序:

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <list>

using namespace std;

void getLongestCommonPrefix(set <list <string> > & input, list <string> & output)
{

    set <list <string> > :: iterator it = input.begin();

    output = *it;

    for(; it != input.end(); ++it)
    {
        if(output.size() > (*it).size())
        {
            list <string> :: iterator it1 = output.begin();
            advance(it1, (*it).size()-1);
            output.erase(it1, output.end());
        }

        list <string> :: iterator it1 = output.begin();
        list <string> :: iterator it2 = (*it).begin();  //lcp.cpp:28:47: error: conv    ersion from ‘std::list<std::basic_string<char> >::const_iterator {aka     std::_List_const_iterator<std::basic_string<char> >}’ to non-scalar type     ‘std::list<std::basic_string<char> >::iterator {aka     std::_List_iterator<std::basic_string<char> >}’ requested

        for(; it1 != output.end(); ++it1,++it2)
        {
            if(*it1 != *it2)
                break;
        }

        output.erase(it1, output.end());

        if(!output.size())
            return;
    }
}     

int main()
{
    return 0;
}

我很想听听专家的意见,了解为什么会发生这种错误,何时发生,以及解决方法是什么。


从 C++11 开始,std::set没有非常量迭代器。当你这样说时:

(*it).begin();

您正在取消引用常量迭代器以获取常量对象并调用begin()在该对象上,这会为您提供另一个常量迭代器,因为该对象是常量。然后,您尝试将此常量迭代器存储到非常量迭代器中,因此会出现错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 错误:转换为非标量类型 [关闭] 的相关文章

随机推荐

  • Javascript 可以检查文件的内容更改吗?

    Example I have var r new FileReader r onload function e drawGraph r result r readAsText f 从用户输入的文件 f 绘制图形 有没有办法检查文件 f 是否
  • 使用 Java 布局管理器的目的是什么?

    似乎每当我尝试创建一个程序时 我总是会使用setLayout null 在 Java 中使用命令 因为我喜欢绝对定位我要放入 Swing 组件上的任何内容 从我读到的内容来看 每个人都在说使用布局管理器来简化编码过程 但它是如何简化的呢 平
  • 从Android手机内存中读取文本文件

    我只想在手机内存中创建一个文本文件 并且必须读取其内容才能显示 现在我创建了一个文本文件 但它不存在于路径 data data package name file name txt 中并且它没有在模拟器上显示内容 我的代码是 public
  • 完整日历 - 拖放 - 自定义

    我正在使用 React 调度程序 FullCalendar 我喜欢保留拖放功能来将事件从一种资源更改为另一种资源 但是有没有办法禁止水平拖动来改变时间呢 同样现在 拖放的工作方式就像事件将从一个资源粘到另一个资源一样 并且没有平滑的拖动操作
  • 如何使用 jQuery UI 调整 datatables.js 列的大小

    我在 stackoverflow 中找到了调整表列大小的解决方案 jQuery UI 使用表格和 colspan 调整大小 https stackoverflow com questions 18812432 jquery ui resiz
  • 图实现C++

    我想知道如何用 C 快速编写图的实现 我需要数据结构易于操作和使用图算法 例如 BFS DFS Kruskal Dijkstra 我需要这个实现来参加算法奥林匹克竞赛 因此编写数据结构越容易越好 你能建议这样的DS 主要结构或类以及其中的内
  • 找不到满足 torch>=1.0.0 要求的版本?

    找不到满足要求的版本 torch gt 1 0 0 找不到 torch gt 1 0 0 的匹配发行版 来自 stanfordnlp 如果您的 Python 版本太新 也可能会发生这种情况 目前使用 Pytorch不支持3 7 9以上版本
  • InvalidDataAccessApiUsageException:执行更新/删除查询 Spring XML 到 Java 配置

    我正在尝试将 spring xml 配置转换为 java 配置 通过 XML 配置可以完美地实现这一点 但是 如果我使用 java 配置初始值设定项 它会引发以下异常 当它尝试运行 JQL 时会发生这种情况 但应用程序正常启动 所有 JPA
  • CocoaPods 错误:RPC 失败; curl 18 传输已关闭,剩余未完成的读取数据

    当我尝试使用 CocoaPods 导入 Realm 时 如下所示 pod install verbose no repo update 然后发生错误 error RPC failed curl 18 transfer closed with
  • 引用c++中的引用

    我正在研究 C 中的参考概念 并且我对 C 完整参考中的这个陈述有点困惑 您不能引用其他引用 那么在这种情况下发生了什么 int var 10 int ref var int r ref ref r ref cout lt lt var l
  • 返回两个圆之间的 x,y 交点的 JavaScript 函数?

    我得到了两个圆的 x y 中心位置及其半径 但我需要使用 JavaScript 找到它们的交点 用红色标记 我认为就数学而言最好的解释已经找到here http paulbourke net geometry circlesphere 两个
  • LEFT OUTER JOIN SUM 双倍问题

    表 购物 shop id shop name shop time 1 Brian 40 2 Brian 31 3 Tom 20 4 Brian 30 表 香蕉 banana id banana amount banana person 1
  • 在数组第三维上应用函数

    我有一个大数组 这是一个可复制的示例 cube lt array c 1 10 5 15 5 5 1 18 c 4 4 3 cube 1 1 2 3 4 1 1 5 9 7 2 2 6 10 8 3 3 7 5 9 4 4 8 6 10 2
  • 添加条目到task_struct并初始化为默认值

    我想添加一个条目到进程控制块结构 task struct 让我们说一种标记某些进程的方法 我想将除 一些特殊进程 之外的所有进程的该字段初始化为 0 稍后通过调用sched setscheduler 我将为 特殊进程 设置此标志 有谁知道如
  • 使用 RequireJS(和 Jasmine/Sinon)时如何在另一个视图渲染方法中存根 Backbone View 实例化

    我正在尝试使用 Jasmine 和 Sion 编写单元测试 但在使用 RequireJs 加载模块时 我很难找到与以下内容等效的内容 sinon stub window MyItemView 使用 RequireJs 时 我无法以这种方式存
  • Google Maps Android API v2,标记标题/片段显示错误

    我使用 Google Maps Android API v2 与 Android 来显示当前位置和附近的标记 使用 Google Places API 接收附近地点的位置和标题 问题是标题 片段中的非英文名称显示失败 例如 希伯来语名字 附
  • 让 ipython 在我按回车键时始终执行命令?

    迁移到 ipython 后 我注意到有时 return 键会导致换行而不是执行命令 例如 如果我的光标之前 in print 这会导致 print 我怎样才能让它运行print 在这种情况和其他情况下 当您处于多行模式时会发生这种情况 例如
  • Google 图表嵌入 API 无法正常工作

    我正在使用 Embed API 从 ServiceAccount 在我的网站上包含 GA 图表 该网站是一个使用 AngularJS 的单页应用程序 我为每种图表类型和控制器创建了多个指令 将其命名GAController 在他们之间共享
  • Pyspark 将结构数组转换为字符串

    我在 Pyspark 中有以下数据框 name subject score Tom math 90 Tom physics 70 Amy math 95 I used collect list and struct函数来自pyspark s
  • C++ 错误:转换为非标量类型 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我似乎在以