通过引用传递向量分段故障C ++

时间:2014-06-27 02:59:35

标签: c++ vector reference core

我通过引用查找传递向量,看起来我正在做的事应该起作用。我测试了这个,只在向量中分配了1个值,但我仍然遇到了分段错误。任何帮助或想法为什么会发生这种情况将非常感激。

伪码:

    template <class X>
    void class<X>::function(const X &A, const X &B, vector<X>&results) const {

         int temp = A;
         int i = 0;

         while (temp > B){
               if(another_function(temp)){
                    results[i] = temp;
                    i++;
               }
         }
    }

基本上,A总是大于B,所以每次都会出现while循环。 &#34; another_function&#34;获取一个int值,如果满足某些条件则返回true,并且每次都减小其值。我测试了它只能在向量中存储3个元素,并且仍然出现分段错误(核心转储)错误......

编辑:我还评论了results[i] = temp;,但效果很好。

2 个答案:

答案 0 :(得分:2)

通过引用传递向量。这是事实 :) 在你的情况下不起作用的是你不能保证你没有索引超过向量的末尾。 您的代码必须保证每次都

results[i] = temp;

,我总是小于results.size()。

答案 1 :(得分:0)

除非您为vector预留了足够的容量,否则应使用push_back

替换

results[i] = temp;

通过

results.push_back(temp);