矢量迭代器的分段故障

时间:2014-12-07 19:03:30

标签: c++ vector stl segmentation-fault const-iterator

为什么当我尝试输出值时,此代码会产生分段错误?
由于线路
而引起分段故障 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;

     }
 }

1 个答案:

答案 0 :(得分: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();

或者那种效果。