首页 > 解决方案 > 将大整数作为向量中的值传递时出现分段错误

问题描述

传递大整数时出现分段错误(核心转储)。它适用于较小的输入。

替换intlong int并尝试全局声明变量,但仍然是同样的错误。此函数用于执行多次右圆旋转并返回给定索引处元素的值。这是功能:

    vector<long long int> circularArrayRotation(vector<long long int> a, long long int k, vector<long long int> queries) {
        vector <long long int> b;
        std::vector<long long int> result(queries.size());

        b=a;
        for(long long int j=0;j<k;j++)
        {
            for(long long int i=0;i<a.size();i++)
                a[i]=b[(a.size()+i-1)%a.size()];
            b=a;
        }

        for(long long int k=0;k<queries.size();k++)
            result[k]=a[queries[k]];
        for(long long int i=0;i<result.size();i++)
                cout<<result[i]<<endl;

        return result;

    }

剩下的代码可以在这里找到链接

标签: c++c++11vectorstl

解决方案


Avector由一组连续内存支持,您的机器无法分配如此大的数组。

您可以考虑改用 a list,但如果您关心性能,可能需要重写代码以使用迭代器。


推荐阅读