segmentation fault for vector iterator

728 views Asked by At

why is this code producing a segmentation fault when i try to output the value ?
the segmentation fault is being caused due to the line

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

There are 1 answers

0
Wintermute On BEST ANSWER

In this declaration:

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

only initial is initialized with vec.end(). To make it do what I think you expect, you have to write

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

or

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

or something to that effect.