【发布时间】:2015-02-05 10:28:59
【问题描述】:
为什么当我尝试输出值时这段代码会产生分段错误?
由于线路
cout
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;
}
}
【问题讨论】:
-
rit_i是使用默认构造函数创建的,因此在执行--rit_i之后取消引用它可能不会满足您的要求。 -
@JordiVermeulen 感谢您的回复..但我不明白您说的是什么。请您显示我需要做的更正。
-
我不知道你的代码应该做什么,所以我无法更正它。但关键是
rit_i变量是使用默认构造函数初始化的。因此,您有一个不绑定到任何容器的迭代器。在这样的迭代器上执行--rit_i是未定义的。 -
@JordiVermeulen 感谢您的帮助..
-
@Michael 这不是反向迭代器,是吗?只是向量末尾的普通迭代器。
标签: c++ vector stl segmentation-fault const-iterator