これが私のコードです
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 の呼び出しが 2 つあり、2 つの異なるベクトルが生成されることです。sort に渡された反復子のペアが有効な範囲ではありません - 2 つの反復子が異なるコンテナーを指しています。
@IgorTandetnik の厚意による説明。