C++ std::vector 自定义排序

Posted 软件工程小施同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ std::vector 自定义排序相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<algorithm>
#include<vector>
#include<iostream>
using namespace std;

typedef struct rect
{
    string name;
    int id;
    int length;
    int width;

    //对于向量元素是结构体的,可在结构体内部定义比较函数,下面按照id,length,width升序排序。
    bool operator< (const rect &a)  const
    {
        if(id!=a.id)
            return id<a.id;
        else
        {
            if(length!=a.length)
                return length<a.length;
            else
                return width<a.width;
        }
    }
}Rect;

int main()
{
    vector<Rect> vec;
    Rect rect;
    
    rect.name="jeff";
    rect.id=4;
    rect.length=7;
    rect.width=8;
    vec.push_back(rect);
    
    
    
    rect.name="li";
    rect.id=4;
    rect.length=5;
    rect.width=6;
    vec.push_back(rect);
    
    rect.name="zhang";
    rect.id=1;
    rect.length=2;
    rect.width=3;
    vec.push_back(rect);
    
    rect.name="wang";
    rect.id=4;
    rect.length=7;
    rect.width=8;
    vec.push_back(rect);
    
    cout << "排序前"<<endl;    
    for(auto it=vec.begin(); it != vec.end(); it++){
        cout<<(*it).name<<' '<<(*it).id<<' '<<(*it).length<<' '<<(*it).width<<endl;    
    }
    
    sort(vec.begin(),vec.end());
    
    cout << "排序后"<<endl;    
    for(auto it=vec.begin(); it != vec.end(); it++){
        cout<<(*it).name<<' '<<(*it).id<<' '<<(*it).length<<' '<<(*it).width<<endl;    
    }
    
    
    
    

    return 0;

}

c++ vector的用法_最热的太阳的博客-CSDN博客 

以上是关于C++ std::vector 自定义排序的主要内容,如果未能解决你的问题,请参考以下文章

c++ - 在寻路中对 std::vector 进行排序

C++ 自定义分配器

基于其他 int 数组的 C++ 排序

C++中 sort 函数的使用详解

linux c++ 快排,堆排序,插入排序时延对比

linux c++ 快排,堆排序,插入排序时延对比