2017-03-25 7 views
-5

このコードをコンパイルする際にいくつか問題があります。私は間違いを見つけることができません。エラーはスコープまたは定数関数のためではありません。私はまた、ソートメソッドを非定数関数に入れようとしましたが、同じエラーが発生しました。std:ベクトルで並べ替えが機能しない

struct _Invoice { 
    unsigned int amm; 
    string id; 
}; 
. 
. 
.  
vector<_Invoice> Invoices; 
. 
. 
. 
bool invComp(const _Invoice &a, const _Invoice &b){ 
    return a.amm < b.amm; 
} 
unsigned int MedianInvoice (void) const{ 
    vector<_Invoice>tmpInvoices(Invoices); 
    sort(tmpInvoices.begin(), tmpInvoices.end(), invComp); 
    return (tmpInvoices.begin() + ceil((double)tmpInvoices.size()/2))->amm; 
} 

ありがとうございます!

+2

ここで最も重要なのは、「invComp」関数を表示するのを忘れたことです。あなたはまた、あなたが見たエラー、あなたの入力が何か、あなたの期待される結果が何か、実際に何が得られたのかといったことを無視しました。助けを始めるには[MCVE]が必要です。 – ShadowRanger

+0

トピックオフ:[C++識別子でアンダースコアを使用する際のルールは何ですか?](http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in- ac-identifier)ヒント:あなたはそれらを壊しています。 – user4581301

+0

ありがとう、私はそれらのルールを認識していませんでした。私は1ヶ月または2ヶ月間だけC++を使用してきました。 また、invCmp関数もあります。 – totalolage

答えて

2

  1.何か問題があるかどうかを確認するには、invCompを提供する必要があります。

  2.このタスクにはsortの代わりにnth_elementを使用します。

auto const n = static_cast<std::size_t>(std::ceil(tmpInvoices.size()/2.0)); 
std::nth_element(tmpInvoices.begin(), tmpInvoices.begin() + n, tmpInvoices.end(), invComp); 
return (tmpInvoices.begin() + n)->amm; 
+0

ありがとう、 私は完全にcomp関数を含むのを忘れていました。それは今あるはずです、 助けと申し訳ありません再度、ありがとう。 – totalolage

+0

@FilipKalny:特定のエラー/問題も含める必要があります。何が間違っているのですか?比較機能が正しく表示されます。 – Pixelchemist

+0

コンパイラの出力は大変だったので、それを含めなかったのは、sort関数の内部動作と関係していました。 私は今、エラーを見つけました。メソッドとファンクションが全く異なる2つのことは知らなかったのですが、私の比較関数は実際はメソッドでした。 – totalolage

関連する問題