精华内容
下载资源
问答
  • VECTOR排序

    2020-04-21 15:11:38
    参考资料:关于C++中vector和set使用sort方法进行排序 作者注:这篇文章写得相当全面,包括对vector和set中不同数据类型(包括结构体)的排序,还有一些还没看懂……特作此摘录,供当前及日后的学习 sort函数默认...

    参考资料:
    关于C++中vector和set使用sort方法进行排序
    作者注:这篇文章写得相当全面,包括对vector和set中不同数据类型(包括结构体)的排序,还有一些还没看懂……特作此摘录,供当前及日后的学习

    sort函数默认从小到大的排序。

    一般类型的排序(int,double,char)

        vector<int> vec;
        for (int i = 0; i < 10;i++)
        {
            vec.push_back(rand());
        }
        sort(vec.begin(), vec.end());
        for (vector<int>::iterator it = vec.begin(); it < vec.end(); it++)
        {
            cout << *it << " ";//注意这里使用*表示解引用
        }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    结果:
    这里写图片描述

    结构体类型的排序(struct)

    结构体定义如下:(试验样本)

    typedef struct ClassDis
    {
        double distance;
        int class1;
        int class2;
    }ClassDis;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    需要自己定义一个比较函数(因为sort默认从小到大排序,因此我们只需要定义什么情况属于“小于”就行了)

    //自定义“小于”
    bool comp(const ClassDis &a, const ClassDis &b)
    {
        return a.distance < b.distance;
    }
    • 1
    • 2
    • 3
    • 4
    • 5
        vector<ClassDis> ddd;
        //随机赋值
        for (double a = 0; a < 10;a++)
        {
            ClassDis aaa{ (double)rand(), (int)a, (int)(a + 2) };
            ddd.push_back(aaa);
        }
        //sort
        sort(ddd.begin(), ddd.end(), comp);
        //输出结果
        for (vector<ClassDis>::iterator it = ddd.begin(); it < ddd.end(); it++)
        {
            cout << it->distance << "," << it->class1 << "," << it->class2 << endl;
        }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    结果:
    这里写图片描述

    展开全文
  • vector 排序

    2019-10-07 21:54:17
    vector> #include <algorithm> 一、vector保存的是基础数据类型(int、char、float等) vector<int> vInt; vInt.push_back(1); vInt.push_back(3); vInt.push_back(2); vInt.push...
    #include <vector>
    #include <algorithm>
    
    一、vector保存的是基础数据类型(int、char、float等)
    
    	vector<int> vInt;
    	vInt.push_back(1);
    	vInt.push_back(3);
    	vInt.push_back(2);
    	vInt.push_back(100);
    	vInt.push_back(15);
    
    	sort(vInt.begin(), vInt.end()); // 从小到大
    
    	
    二、vector保存的是自定义数据类型
    
    struct Person
    {
        string Name;
        string Sex;
        int Age;
        int High;
        Person()
        :Age(0)
        ,High(0)
        {
        }
    };
    
    方法一:
      //定义比较函数
      bool CmpAge(const Person& p1,const Person& p2)
      {
         return p1.Age < p2.Age;//小于号表示:从小到大排序(小的在前,大的在后)
                       //大于号相反
      }
    
    方法二:
    
      结构体重载比较函数:
    
    struct Person
    {
        string Name;
        string Sex;
        int Age;
        int High;
        Person()
        :Age(0)
        ,High(0)
        {
        }
     
        bool operator < (const Person& obj) const //重载小于操作符,函数最后的 const 别忘了,否则会报错。(详见:http://www.cnblogs.com/SZxiaochun/p/7731900.html) 
        {
            return Age < obj.Age;
        }
    };
    
      //定义比较函数
      bool CmpAge(Person& p1,Person& p2) (参数不要 const,否则报错)
      {
         return p1 < p2;//小于号表示:从小到大排序(小的在前,大的在后)
                       //大于号相反
      }
    
    Person per1,per2;
    per1.Name = "xiaochun";
    per1.Sex = "男";
    per1.Age = 21;
    per1.High = 168;
    
    per2.Name = "chunxiao";
    per2.Sex = "男";
    per2.Age = 22;
    per2.High = 168;
    
    vector<Person> vec_Person;
    vec_Person.pushback(per1);
    vec_Person.pushback(per2);
    
    //排序
    sort(vec_Person.begin(),vec_Person.end(),CmpAge);
    
    //vector输出
    //省略
    ......    
      
      
      
    

      

    转载于:https://www.cnblogs.com/SZxiaochun/p/6377084.html

    展开全文
  • Vector排序

    2013-05-08 10:17:03
    1. Vector 默认按元素的添加顺序排序 import java.util.Vector; public class TestVector { public static void main(String[] args) { Vector&lt;Integer&gt; e = new Vector&lt;Integer&...

     

    1. Vector 默认按元素的添加顺序排序

    import java.util.Vector;
    
    public class TestVector {
      
        public static void main(String[] args) {
    
            Vector<Integer> e = new Vector<Integer>(10);
            
            e.add(33);
            e.add(2);
            e.add(3);
            e.add(5);
            e.add(1);
            e.add(1);
            e.add(0);
            e.add(10);
            
            for (Integer elem: e) {
                System.out.println(elem);
            }
        }
    }

     运行结果

    33
    2
    3
    5
    1
    1
    0
    10
    

     

    2. 按升序排序

       2.1 要排序的对象     

    public class Elem {
    
        private int val;
        
        public Elem(int val) {
            this.val = val;
        }
        
        public int getVal() {
            return val;
        }
    }

        2.2 排序    

    import java.util.Comparator;
    
    public class ElemCompare implements Comparator<Elem> {
    
        @Override
        public int compare(Elem o1, Elem o2) {
    
            /*升序*/
            
            if (o1.getVal() < o2.getVal()) {
                return -1;
            } else if (o1.getVal() > o2.getVal()) {
                return 1;
            }
            
            return 0;
        }
    }

       2.3 测试    

    import java.util.Collections;
    import java.util.Vector;
    
    public class TestVector {
    
        public static void main(String[] args) {
    
            Vector<Elem> e = new Vector<Elem>(10);
            
            e.add(new Elem(33));
            e.add(new Elem(2));
            e.add(new Elem(3));
            e.add(new Elem(5));
            e.add(new Elem(1));
            e.add(new Elem(1));
            e.add(new Elem(0));
            e.add(new Elem(10));
            
            Collections.sort(e, new ElemCompare());
            
            for (Elem elem: e) {
                System.out.println(elem.getVal());
            }
        }
    }

        2.4 运行结果

         

    0
    1
    1
    2
    3
    5
    10
    33
    

     

     

    展开全文
  • vector排序

    千次阅读 2012-08-31 09:45:45
    最近做的东西,要将vector 中的内容输出,结果发现有些文件被交替反复打开,所以就想吧vector 中的元素排序,学习中发现下面这篇文章总结的挺好的,分享一下也~ C++中当 vector 中的数据类型为基本类型时我们调用...

    最近做的东西,要将vector 中的内容输出,结果发现有些文件被交替反复打开,所以就想吧vector 中的元素排序,学习中发现下面这篇文章总结的挺好的,分享一下也~

    C++中当 vector 中的数据类型为基本类型时我们调用std::sort函数很容易实现 vector中数据成员的升序和降序排序,然而当vector中的数据类型为自定义结构体类型时,我们该怎样实现升序与降序排列呢?有两种方法,下面的例子能很好的说明:方法1:
    我们直接来看代码吧,比较简单,容易理解:

    #include "stdafx.h"
    #include <vector>
    #include <algorithm>
    #include <functional>
    
    using namespace std;
    struct AssessTypeInfo
    {
    unsigned int m_uiType; //类型ID
    char m_szName[64]; //类型名称
    unsigned int m_uiTotal; //总分数
    
    };
    
    bool operator < (const AssessTypeInfo& rhs ) const //升序排序时必须写的函数
    {
    return m_uiType < rhs.m_uiType;
    }
    bool operator > (const AssessTypeInfo& rhs ) const //降序排序时必须写的函数
    {
    return m_uiType > rhs.m_uiType;
    }
    }
    int main()
    {
    vector<AssessTypeInfo > ctn ;
    
    AssessTypeInfo a1;
    a1.m_uiType=1;
    AssessTypeInfo a2;
    a2.m_uiType=2;
    
    AssessTypeInfo a3;
    a3.m_uiType=3;
    
    ctn.push_back(a1);
    ctn.push_back(a2);
    ctn.push_back(a3);
    //升序排序
    sort(ctn.begin(), ctn.end(),less<AssessTypeInfo>()) ; //或者sort(ctn.begin(), ctn.end())默认情况为升序
    
    for ( int i=0; i<3; i++ )
    printf("%d\n",ctn[i].m_uiType);
    
    //降序排序
    sort(ctn.begin(), ctn.end(),greater<AssessTypeInfo>()) ;
    
    for ( int i=0; i<3; i++ )
    printf("%d\n",ctn[i].m_uiType);
    
    
    return 0 ;
    }
    



    以上方法就可以实现升序排序,输出结果为 1 2 3
    降序排序结果3 2 1。
    方法2 : 不修改结构体或类的定义部分,我们用函数对象来实现:

    #include "stdafx.h"
    #include <vector>
    #include <algorithm>
    #include <functional>
    
    using namespace std;
    struct AssessTypeInfo
    {
    unsigned int m_uiType; //类型ID
    char m_szName[64]; //类型名称
    unsigned int m_uiTotal; //总分数
    };
    
    bool lessmark(const AssessTypeInfo& s1,const AssessTypeInfo& s2)
    {
    return s1.m_uiType < s2.m_uiType;
    }
    bool greatermark(const AssessTypeInfo& s1,const AssessTypeInfo& s2)
    {
    return s1.m_uiType > s2.m_uiType;
    }
    int main()
    {
    vector<AssessTypeInfo > ctn ;
    
    AssessTypeInfo a1;
    a1.m_uiType=1;
    AssessTypeInfo a2;
    a2.m_uiType=2;
    
    AssessTypeInfo a3;
    a3.m_uiType=3;
    
    ctn.push_back(a1);
    ctn.push_back(a2);
    ctn.push_back(a3);
    
    sort(ctn.begin(), ctn.end(),lessmark) ; //升序排序
    
    
    for ( int i=0; i<3; i++ )
    printf("%d\n",ctn[i].m_uiType);
    
    sort(ctn.begin(), ctn.end(),greatermark) ; //降序排序
    
    
    return 0 ;
    }
    



    以上方法就可以实现升序排序,输出结果为 1 2 3
    降序排序结果3 2 1。
    方法2是一种比较简单的方法。
    以上两种方法您可根据您自己的需求选择,并且以上两种方法在VC++6.0环境下编译通过,也是自己在实践过程中的总结,如有不妥的地方,欢迎您指出,至于为什么这样使用,请参考 stl算法中sort 部分。

    ==================================================================================================================================

    天要做一个对C++ STL的vector容器做一个排序操作,之前一直把vector当做一个容量可自动变化的数组,是的,数组,所以打算按照对数组进行排序的方法:用快速排序或是冒泡排序等算法自己写一个排序的函数。后来觉得STL这么强大,应该有它自己的排序方法(没有好好学习啊),然后就去google了一下,果然有,而且可以自定义排序的函数,太强大了(而且效率应该比我自己写的要好吧)。

    // VectorSort.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    #include <iostream>
    #include <vector>
    #include <algorithm>
    
    //先自定义一个结构体
    struct Test {
        int member1;
        int member2;
    };
    
    //自定义排序函数
    bool SortByM1( const Test &v1, const Test &v2)//注意:本函数的参数的类型一定要与vector中元素的类型一致
    {
        return v1.member1 < v2.member1;//升序排列
    }
    
    void MyPushback(std::vector<Test> & vecTest, const int &m1, const int &m2)
    {
        Test test;
        test.member1 = m1;
        test.member2 = m2;
        vecTest.push_back(test);
    }
    
    void PrintVector( std::vector<Test> & vec)
    {
        /*
            插一句,
            vec.begin()对应的位置是向量的第一个位置,
            vec.end()对应的是vector中的最后的一个元素位置的后面的一个位置(我认为,实际上是一个无效位置)
            文档上的定义:Returns an iterator referring to the past-the-end element in the vector container.
        */
        for(std::vector<Test>::iterator it = vec.begin() ; it != vec.end() ; it++ )
        {
            std::cout<<it->member1<<'\t'<<it->member2<<std::endl;
        }
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        std::vector<Test> vecTest;
        MyPushback(vecTest,9,1);
        MyPushback(vecTest,8,2);
        MyPushback(vecTest,7,3);
        MyPushback(vecTest,6,4);
        MyPushback(vecTest,5,5);
        MyPushback(vecTest,4,6);
        MyPushback(vecTest,3,7);
        MyPushback(vecTest,2,8);
        MyPushback(vecTest,1,9);
        //排序之前
        std::cout<<"Before Sort:"<<std::endl;
        PrintVector(vecTest);
    
        std::cout<<"对向量中的所有元素按member1进行升序排列:"<<std::endl;
        std::sort(vecTest.begin(),vecTest.end(),SortByM1);
        PrintVector(vecTest);
    
        //std::cout<<"对向量中的第2个到第5个元素按member1进行升序排列:"<<std::endl;
        //std::sort(vecTest.begin()+1,vecTest.begin()+5,SortByM1);//vecTest.begin()+5为第6个位置
        //PrintVector(vecTest);
    
        return 0;
    }
    

    展开全文
  • Rust 标准库 std 提供了对 vector 集合排序的方法,本文分别通过对整数 vector 、对浮点数 vector、对结构体 vector 这三方面排序,来对 Rust std crate 做一个初探。整数 Vector 排序这个实例通过 vec::sort 对一个...
  • Vector 排序

    2011-05-20 13:11:00
    //升序排序  sort( ctn.begin(), ctn.end(), less() ); //或者sort(ctn.begin(), ctn.end()) 默认情况为升序 //降序排序  sort(ctn.begin(), ctn.end(),greater()) ; 
  • C++ vector排序

    万次阅读 2018-08-08 14:37:17
    使用sort()函数(要添加引用algorithm)可以很方便地对数组进行排序,搭配自定义的compare函数可以实现多种对数据进行排序的方式,同样,对vector排序也可以使用sort函数,一般来说,在对vector进行排序地时候,要...
  • C++——自定义结构体vector排序
  • C++ vector 排序

    2015-03-23 11:29:54
    C++ vector 排序  C++中当 vector 中的数据类型为基本类型时我们调用std::sort函数很容易实现 vector中数据成员的升序和降序排序,然而当vector中的数据类型为自定义结构体类型时,我们该怎样实现升序与降序排列呢...
  • C++中的结构体vector排序详解 使用sort函数对一个vector很常用,前提是通文件中必须包含#include ,但是针对结构体vector排序则需要进行一定的改动。具体事例如下所示: // sort algorithm example #include <...
  • 展开全部自定义排序吧,自己写一62616964757a686964616fe58685e5...将所有的需要排序vector放入到一个List之中,然后调用Collections的sort方法进行排序。下面是实现的代码。importjava.util.ArrayList;importja...
  • } } public class Vector1 { public static void main(String[] args) { List v = new Vector(); v.add(new Elem(1)); v.add(new Elem(22)); v.add(new Elem(3)); v.add(new Elem(14)); Comparator ct = new ...
  • std::vector排序详解

    2011-10-09 13:20:38
    一个详细全面的关于vector排序的例子。 涉及到 如何继承std::binary_function, CString, bool>、如何重载operator().
  • C++二维vector排序sort 函数的使用 sort 函数的使用 自定义排序函数 (目标:对 二维vector<vector> points中第二个元素进行排序) static bool cmp(const vector<int>& a,const vector<int&...
  • Vector排序:import java.util.*;class MyCompare implements Comparator //实现Comparator,定义自己的比较方法{public int compare(Object o1, Object o2) {Elem e1=(Elem)o1;Elem e2=(Elem)o2;if(e1.get() > ...
  • temp=CustomerMaker.quickPassQueue.get(0);//获得首元素CustomerMaker.quickPassQueue.remove(0);//删除首元素quickPassQueue.add();在末尾添加元素----演示程序-----import java....public class test{Vector v = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,561
精华内容 6,224
关键字:

vector排序