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>.

它给了我各种各样的堆栈跟踪,其中一行给了我以下信息:

xcode错误2

哪个代码片段在我的Tuple.h文件中。

我不知道还能做什么!非常感谢任何帮助,因为我的 CS 课程项目现在晚了 3 天,因为我无法弄清楚这个 LAST 排序算法。我已经用关系和关系操作选择、项目和重命名实现了一个关系数据库管理系统。我有正确格式化这些元组,它们只需要按排序顺序。谢谢!

编辑:

所以我按照答案中的建议更改了声明,但现在它给了我:

又一个错误

有什么帮助吗?

4

2 回答 2

3

这将 aTuple与 a进行比较Tuple*

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

你应该把它改成这样:

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

您需要一个const Tuple*const Tuple*. 在 Tuple 类中声明:

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

并将其实现为常规功能。


编辑

如果你的向量是std::vector<Tuple>那么你应该实现:

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

而不是您的指针版本。

于 2013-03-27T03:01:11.470 回答