C++ 如何在C++;?
我正在C++ 如何在C++;?,c++,sorting,C++,Sorting,我正在中使用std::sort函数。我想使用如下示例: // using default comparison (operator <): std::sort (myvector.begin(), myvector.begin()+4); std::sort(newTuples->begin(), newTuples->end()); 其中,newTuples为 std::vector<Tuple>* 问题是,当我尝试在XCode中构建时,会出现如下错
中使用std::sort函数。我想使用如下示例:
// using default comparison (operator <):
std::sort (myvector.begin(), myvector.begin()+4);
std::sort(newTuples->begin(), newTuples->end());
其中,newTuples
为
std::vector<Tuple>*
问题是,当我尝试在XCode中构建时,会出现如下错误:
哪个代码段在
中
它为我提供了各种堆栈跟踪,其中一行为我提供了以下信息:
哪个代码段在我的Tuple.h
文件中
我不知道还能做什么!任何帮助都是非常感谢的,因为我的CS类项目现在已经晚了3天,因为我想不出最后的排序算法。我已经用关系和关系操作select、project和rename实现了一个关系数据库管理系统。我有这些元组正确的格式,他们只需要按顺序排序。谢谢
编辑:
因此,我按照答案中的建议更改了声明,但现在它给了我:
有什么帮助吗?您需要一个操作符来比较const Tuple*
和const Tuple*
。在Tuple类中声明:
friend bool operator<(const Tuple*, const Tuple*);
friend bool操作符您需要一个将const Tuple*
与const Tuple*
进行比较的操作符。在Tuple类中声明:
friend bool operator<(const Tuple*, const Tuple*);
friend bool操作符将元组
与元组*
bool const Tuple::operator<(Tuple * tup1)
bool const Tuple::operator这将Tuple
与Tuple*
bool const Tuple::operator<(Tuple * tup1)
bool const Tuple::operator因为你有一个指针向量,它将对指针进行排序。这是一个输入错误。最初它是一个指针向量,所以我将它复制到一个新的向量(因此命名为newTuples),它是Tuple
,而不是Tuple*
。但是谢谢!因为你有一个指针向量,它将对指针进行排序。这是一个打字错误。最初它是一个指针向量,所以我将它复制到一个新的向量(因此命名为newTuples),它是Tuple
,而不是Tuple*
。但是谢谢@Tushar,函数定义末尾的const
没有任何意义,因为它不是成员函数。derp…仍在查看上面的成员函数。@Tushar,函数定义末尾的const
没有任何意义,因为它不是成员函数。derp…仍在查看上面的成员函数。我实现了您的建议。请参阅上面的“编辑”,了解它给我带来的新错误。问题是其他函数确实使用at(int)方法来修改它,所以我不能让它保持不变…我对我的size()
函数做了相同的const
更改,它工作了。但是关于at(int)
function?@ejsuncy,这意味着这些错误中提到的函数也是不正确的。使它们成为const
。即使我在其他上下文中使用函数const
来进入并修改它返回的内容,我也可以创建函数吗?@ejsuncy此站点与对话不兼容。我认为这个问题会成为一个很好的新帖子。祝你好运我执行了你的建议。请参阅上面的“编辑”,了解它给我带来的新错误。问题是其他函数确实使用at(int)方法来修改它,所以我不能让它保持不变…我对我的size()
函数做了相同的const
更改,它工作了。但是关于at(int)
function?@ejsuncy,这意味着这些错误中提到的函数也是不正确的。使它们成为const
。即使我在其他上下文中使用函数const
来进入并修改它返回的内容,我也可以创建函数吗?@ejsuncy此站点与对话不兼容。我认为这个问题会成为一个很好的新帖子。祝你好运
bool Tuple::operator<( const Tuple &tup1 ) const