-6

为什么当我尝试输出值时这段代码会产生分段错误?
由于行

cout << *rit_j 导致分段错误;

void chef(vector<int>vec)
{
    int count=0;
    vector<int>::iterator bit = vec.begin();
    vector<int>::iterator eit=vec.end();
    if(*bit != *eit)
    {
        sort(bit,eit);          
        vector<int>::iterator rit_i,rit_j,initial = vec.end();
        --rit_i;--rit_j;--initial;
        cout << *rit_i;

     }
 }
4

1 回答 1

3

在此声明中:

vector<int>::iterator rit_i,rit_j,initial = vec.end();

只有initial用 初始化vec.end()。为了让它做我认为你所期望的,你必须写

vector<int>::iterator rit_i = vec.end(), rit_j = vec.end(), initial = vec.end();

或者

vector<int>::iterator rit_i,rit_j,initial;
rit_i = rit_j = initial = vec.end();

或类似的东西。

于 2014-12-07T19:14:03.687 回答