使用std :: sort对自定义对象的矢量进行排序

时间:2016-02-21 22:40:07

标签: c++ sorting vector

考虑以下代码段。当向量体积很小时它可以正常工作但是当它变得比18更大时崩溃(分段错误)(在我的例子中)。

我认为发生这种情况的原因之一可能是std::sort会围绕创建新副本的对象移动,当向量被解除分配时,它会尝试释放原始指针。

如果我的假设是正确的,那么对这些对象进行排序的最佳方法是什么?

   class info {
       int idx, value, tsub;
       public:
       info(int a, int b, int c) : idx(a), value(b), tsub(c) {}
       static bool compareP(info i1, info i2) { return i1.tsub <= i2.tsub; }
   };

   class CustomClass {
       public:
       void MyFunc() {
           vector<info> data;
           for (int i = 0; i < 18; i++)
               data.push_back(info(0, 0, 0));
           sort(data.begin(), data.end(), info::compareP);
       }
   };

   int main() {
        CustomClass c;
        c.MyFunc();
   }

谢谢!

0 个答案:

没有答案