当前位置: 首页 > 知识库问答 >
问题:

向量上的分割错误

严恩
2023-03-14

我的C++代码如下所示,问题是它输出的是“=======”,但之后却说“分段错误”。我真的不明白这个分割错误。有人能告诉我代码的哪一部分错了吗?

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int main(){

class Solution
{
public:
    //Solution();
    //~Solution();
    std::vector< std::vector<int>  > subset(std::vector<int> S){
        sort(S.begin(), S.end());
        std::vector< std::vector<int> > res;
        std::vector<int> temp;
        res.push_back(temp);
        dfs(res, temp, S, 0);

        return res;
    }

private:
    void dfs(std::vector<std::vector<int> > res, std::vector<int> temp,     std::vector<int> S, int pos){
        for (int i = pos; i <= S.size()-1; i++)
        {
        temp.push_back(S[i]);
        res.push_back(temp);
        dfs(res, temp, S, i+1);
        temp.pop_back();                    /* code */
        }
    }

        /* data */
    };


std::vector<int> array(3);
array[0]=1; array[1]=2; array[2]=3;
std::vector<std::vector<int> > res;
Solution MySolution;
res=MySolution.subset(array);

cout<<"======="<<endl;
cout<<res[0][0]<<endl;

     return 0;
}

共有1个答案

酆翔宇
2023-03-14

您传递的是向量的副本,而不是向量引用。

    std::vector< std::vector<int> > res;
    std::vector<int> temp;
    res.push_back(temp);
    dfs(res, temp, S, 0);

此代码创建一个向量 >res; ,向其推送一个空向量,然后调用一个在此作用域内不改变任何状态的函数。最后,使用res[0][0]取消引用。res[0]给出一个空向量,因此第二个[0]段出现故障。

替换此函数定义

void dfs(std::vector<std::vector<int>> res, std::vector<int> temp, std::vector<int> S, int pos){...}
void dfs(std::vector<std::vector<int>>& res, std::vector<int>& temp, const std::vector<int>& S, int pos){...}
 类似资料:
  • 问题内容: 我陷入了一个似乎无法解决的问题。拆分时,我应该能够获取 ID,名称,并 通过设置 row [0],row [1],row [2]进行检查 。奇怪的是,只有row [0](id)似乎有效。 名称,检查 给我一个错误。有人可以进一步帮助我吗? 数据示例: 码: 错误信息: 解决了 似乎文件末尾的值(问号)不正确。删除此行时。我的代码正常工作(没有Patter.quote)。谢谢大家的快速答

  • 我有一个关于微服务架构应用Swagger的问题。应用程序是用Jhipster生成的。由于我的后端应用程序有很多endpoint,所以将那些endpoint加载到swagger是不可能的(整个网关应用程序会被卡住)。所以,我的想法是在Swagger(过滤器)上做某种endpoint组。目前,gateway app下拉列表中的API item打开了带有两个项的Swagger UI,default(/v

  • 我在这里看到过许多类似的线程,但我的问题是,我的程序实际上是在不同的设置下运行的。 例如:当我的矩阵是 对于2个核心:错误11 对于4,8,16等工作正常。 矩阵: 对于任何核心设置:错误11。 我不明白为什么会发生这种情况,每个过程都需要一个2048/(总过程)X 2028矩阵来计算。它应该工作正常。 以下是我声明矩阵的方式: 接收: 和发送: 我不明白,它应该起作用了。你认为这可能是内存问题,

  • 根据其他建议,取消引用可能会出现问题,但我在调用max_element函数时甚至在取消引用之前就出现了分段错误。 最小可复制示例:

  • 如何解决composer中的分段错误?安装后会发生这种情况 /c/ProgramData/ComposerSetup/bin/composer:第18行:1024分段错误php"${dir}/composer.phar"$*

  • 我正在尝试应用文本排序算法,不幸的是,我有一个错误 我有以下错误: 回溯(最近一次呼叫最后一次): 文件“bayes_classif.py”,第22行,在 数据集=pd。read_csv('train.csv',编码='utf-8') 文件“/usr/local/lib/python3.6/dist-packages/pandas/io/parsers.py”,第678行,在解析器中 返回读取(文