当前位置: 首页 > 知识库问答 >
问题:

排序向量内的值时,使用排序方法生成错误

庄嘉
2023-03-14

当我们在debian机器中使用g编译下面的代码时,会生成以下错误。。。有人能帮我解释一下为什么会出现错误吗?我试着注释排序行,然后出现错误,但是我们的任务需要排序,那么可能的解决方案是什么

代码

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

// Here is a simple struct
struct MyStruct
{
   int Num;
   // Define the operator <
   bool operator <(const MyStruct& Rhs)
   {
      return (Num < Rhs.Num);
   }
};

int main()
{
   vector<MyStruct> MyVector;
   // Let the size be 5.
   MyVector.resize(5);
   // Push 5 instances of MyStruct with Num ranging
   // from 5 to 1
   MyStruct TestStruct;
   int i = 0;
   for (i = 0; i < 5; ++i)
   {
      TestStruct.Num = 5 - i;
      MyVector[i] = TestStruct;
   }
   // Now sort the vector
   sort(MyVector.begin(), MyVector.end());
   // Try to display Num for each element. It is sorted
   for (i = 0; i < 5; ++i)
   {
      cout << MyVector[i].Num << '\n';
   }
   return 0;

输出:

在/usr/include/c/4.7/algorithm:63:0中包含的文件中,来自testvect。cpp:3:/usr/include/c/4.7/bits/stl\u algo。h: 在“\u RandomAccessIterator std::\u unguarded\u partition(\u RandomAccessIterator,\u RandomAccessIterator,const \u Tp”的实例化中

共有2个答案

呼延骏俊
2023-03-14

更正代码:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

// Here is a simple struct
struct MyStruct
{
   int Num;
   // Define the operator <
   bool operator <(const MyStruct& Rhs)const
   {
      return (Num < Rhs.Num);
   }
};

int main()
{
   vector<MyStruct> MyVector;
   // Let the size be 5.
   MyVector.resize(5);
   // Push 5 instances of MyStruct with Num ranging
   // from 5 to 1
   MyStruct TestStruct;
   int i = 0;
   for (i = 0; i < 5; ++i)
   {
      TestStruct.Num = 5 - i;
      MyVector[i] = TestStruct;
   }
   // Now sort the vector
   sort(MyVector.begin(), MyVector.end());
   // Try to display Num for each element. It is sorted
   for (i = 0; i < 5; ++i)
   {
      cout << MyVector[i].Num << '\n';
   }
   return 0;
郎建章
2023-03-14

在stl使用常量的地方,您使用的是非常过时的编译器

改变:

  bool operator <(const MyStruct& Rhs)

  bool operator <(const MyStruct& Rhs) const
                                       ^^^^^

或者,使用更高版本的编译器,该编译器支持更现代的C版本,然后使用“-std=C 11”或“-std=C 14”启用更现代的版本。

 类似资料:
  • 我有一个复杂的拖放场景,我只是不明白。我想出来的是:jsfiddle.net/aTjMG/2/ 在左边,我有一个名单。在右边,我有一组团队。左边的列表应该按字母顺序排列,不可排序。用户应该能够通过从左侧的列表中拖动到一个团队来将一个人分配到一个团队。被分配到团队的人应该能够被排序或移动到另一个团队,或者移动回未分配的池。 我可以从左边的未分配池移动到任何团队。我可以对团队中的人进行分类。从这里我不

  • 问题内容: 因此,在标头的c ++文档中,有一个不错的函数可让您对向量进行排序。我上课。我有一个指向该类()对象的指针向量,并且我想通过不同的参数(例如年龄,姓名长度等)来比较人员。 我已经有返回所需变量的函数,但是我不确定该怎么做。这是c ++参考http://www.cplusplus.com/reference/algorithm/sort/中的排序向量函数的链接。 问题答案: 很简单: 然

  • 我是C语言的新手,正在尝试根据另一个向量中的值对向量进行排序。我试图通过创建结构向量并使用STL对结构向量进行排序来实现这一点。结构有两个数据项,一个是CustomType,另一个是int。我希望按int字段的降序排序,因此包含一个布尔运算符重载,以便能够使用STL排序(算法)。 在函数中使用对CustomType向量和初始未初始化的int向量的引用构造结构,并将它们组合成结构向量。int的值是通

  • 我正在尝试使用冒泡排序对数组进行排序,但它行不通。上面写着“required:variable,found:

  • 本文向大家介绍tablesorter.js表格排序使用方法(支持中文排序),包括了tablesorter.js表格排序使用方法(支持中文排序)的使用技巧和注意事项,需要的朋友参考一下 最近,因为项目需要,对表格排序做了一下摸索,整理如下: 1. 首先,可从官网下载tablesorter.js,但并不支持中文的排序,对其源码进行修改: 部分源码: 修改后: 修改完之后的js可支持中文的排序。 2.建

  • 问题: 我必须分析时间复杂度来对几乎已排序的整数值列表进行排序(使用快速排序)。 我做了什么? 我读过SO Q1、SO Q2、SO Q3和这一本。 但是,我没有发现任何明确提到使用快速排序对k排序数组进行排序的时间复杂度的内容。 由于快速排序算法的时间复杂度取决于选择数据透视的策略,并且由于几乎排序了数据,因此有可能面临最坏情况,为了避免最坏情况,我使用了三个值(第一、中间、最后)的中位数作为这里