为什么当我尝试输出值时,此代码会产生分段错误?
由于线路
而引起分段故障
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;
}
}
答案 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();
或者那种效果。