这是我的代码
bool cmp (const char &a, const char &b)
{
if ((int) a == (int) b)
{
return false;
}
if ((int) a > (int) b)
{
return false;
}
return true;
}
std::sort(
dfaVector.at(0).getSigma().begin(),
dfaVector.at(0).getSigma().end(),
cmp);
getSigma()
返回std::vector<char>
,它们不为空-我检查了它。我可以根据需要从gdb发布堆栈跟踪。我正在使用g ++ 4.8,OS Mint 14回答
正如@livingissuicide所建议的那样,问题在于
getSigma()
需要返回引用(即sth常量@ PhoenixX_2)。之所以解释为什么它需要返回一个引用(以及为什么仅仅一个简单的副本就不够)是因为问题是有两次调用getSigma的操作,产生两个不同的向量。传递给sort的一对迭代器不是有效范围-两个迭代器指向不同的容器。
说明由@IgorTandetnik提供。
最佳答案
getSigma()返回std :: vector
确保您的getSigma()函数返回引用(std :: vector &)而不是副本!