1

でstd::sort関数を使用しています<algorithm>http://www.cplusplus.com/reference/algorithm/sort/にある例に従いました。次のような例を使用します。

// using default comparison (operator <):
   std::sort (myvector.begin(), myvector.begin()+4); 

私のクラスに適用すると、次のようになります。

std::sort(newTuples->begin(), newTuples->end());

newTuplesタイプはどこですか

std::vector<Tuple>*

だから私はクラスのoperator<機能を無効にしました:Tuple

bool const Tuple::operator<(Tuple * tup1){
    bool result = false;

    for(int iii=0; iii<tup1->size(); iii++){
        if(tup1->at(iii)->getTokensValue() < this->at(iii)->getTokensValue()){
            result = true;
            break;
        }
        else if (tup1->at(iii)->getTokensValue() > this->at(iii)->getTokensValue())
            break;
    }

    return result;


}

問題は、XCodeをビルドしようとすると、次のエラーが表示されることです。

Xcodeエラー

どのコードスニペットがにありますか<algorithm>

それは私にある種のスタックトレースを与え、そのうちの1行は私に次のことを与えます:

xcodeエラー2

どのコードスニペットが私のTuple.hファイルにありますか。

他に何をしたらいいのかわからない!この最後の並べ替えアルゴリズムを理解できないため、私のCSクラスプロジェクトは現在3日遅れているので、どんな助けでも大歓迎です。私はすでにリレーショナルデータベース管理システムを実装しており、リレーショナル操作は選択、投影、名前変更を行っています。これらのタプルは正しくフォーマットされています。ソートされた順序である必要があります。ありがとう!

編集:

だから私は答えで示唆されているように宣言を変更しました、しかし今それは私に与えます:

さらに別のエラー

何か助けはありますか?

4

2 に答える 2

3

これはTupleTuple*

bool const Tuple::operator<(Tuple * tup1)

これに変更する必要があります:

bool Tuple::operator<( const Tuple &tup1 ) const
于 2013-03-27T03:10:40.530 に答える
2

const Tuple*と比較する演算子が必要ですconst Tuple*。タプルクラス内で次のように宣言します。

friend bool operator<(const Tuple*, const Tuple*);

通常の関数として実装します。


編集

ベクトルがそうである場合はstd::vector<Tuple>、以下を実装する必要があります。

bool Tuple::operator<(const Tuple&) const;

ポインタバージョンの代わりに。

于 2013-03-27T03:01:11.470 に答える