C++STL二维vector指定位置排序

自己一直用vector 二维的存储变量 有时候需要进行排序 在此 为记录一下方法 废话少说直接上代码

#include <QCoreApplication>
#include <iostream>
using namespace std;
#include <vector>
#include <string>
#include <algorithm>

#include <QDateTime>
#include <QTimer>
#include <qdebug.h>

bool cmp1(const vector<int> &a, const vector<int> &b)
{
    return a[0] > b[0];
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    vector<vector<int>> viA(10);
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            viA[i].push_back(rand() % 100);
        }
    }

    cout<< "no :"  << endl;
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            cout << viA[i][j] << "\t";
        }
        cout << endl;
    }
    cout << "sort :" << endl;

    sort(viA.begin(), viA.end(), cmp1);

    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            cout << viA[i][j] << "\t";
        }
        cout << endl;
    }

    return a.exec();
}

运行结果:

no 锛
41    67    34
0    69    24
78    58    62
64    5    45
81    27    61
91    95    42
27    36    91
4    2    53
92    82    21
16    18    95
sort 锛
92    82    21
91    95    42
81    27    61
78    58    62
64    5    45
41    67    34
27    36    91
16    18    95
4    2    53
0    69    24    

原文地址:https://www.cnblogs.com/wanghuixi/p/10647771.html

时间: 2024-10-11 06:28:58

C++STL二维vector指定位置排序的相关文章

动态创建二维vector数组+指针与引用的区别

二维vectorvector<vector <int> > ivec(m ,vector<int>(n));    //m*n的二维vector 动态创建m*n的二维vector方法一:vector<vector <int> > ivec;ivec.resize(m);for(int i=0;i<m;i++) ivec[i].resize(n); 方法二:vector<vector <int> > ivec;ivec

二维vector的初始化

1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 int main() 6 { 7 int m, n; 8 cin >> m >> n; 9 vector<vector<int> > value(m, vector<int>(n)); // 两个>用空格分开 10 for (int i = 0; i < m; i++){ 1

二维vector访问

//  方式1 vector<vector<double> > p1(pt1.size(), vector<double>(2)); // 方式2 vector<vector <double>> ps; vector<double> pp; for(int i = 0; i < pt1.size(); i++) { p1[i][0] = pt1[i].x; p1[i][1] = pt1[i].y; pp.push_back(pt

14周(二维数组姓名成绩排序)

/* *copyright(c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:14周(二维数组姓名成绩排序) *作者:王忠 *完成日期:2014.12.01 *版本号:v1.0 * *问题描述:初始化同学的成绩,姓氏,按大小排序 *输入描述:无 *程序输出:按照姓名或者成绩大小排序并输出 #include <iostream> #include <string> using namespace std; const int num=8; i

14周(二维数组成绩姓名排序)

/* *copyright(c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:14周(二维数组成绩姓名排序) *作者:王忠 *完成日期:2014.12.01 *版本号:v1.0 * *问题描述:初始化同学的成绩,姓氏,按大小排序 *输入描述:无 *程序输出:按照姓名或者成绩大小排序并输出 #include <iostream> #include <string> using namespace std; const int num=8; i

二维vector容器读取txt坐标

template <class vector> struct HeadLocation{ vector x; vector y; }; vector<HeadLocation<int> > gt_loc_; //二维vector容器 void ReadLocationFromTextFile(const string filename) { cout << "Opening file " << filename <<

【咸鱼教程】Egret可长按识别二维码(精确位置和大小)

教程目录一 实现原理二 实现过程三 Demo下载 本教程是在Egret中实现长按识别的二维码,并可以精确定位二维码的位置和大小,支持横屏和竖屏. 一 实现原理 微信中长按识别二维码,需要长按jpg或png等图片上,才会调起识别. 因为egret中的二维码,是绘制在canvas上的,故不能被长按识别. 所以为了解决这个问题,需要在canvas上覆盖一个二维码<img>标签, 达到可以长按识别的需求. 二 实现过程 1 在index.html中为div增加id = gameDiv,以备在egret

Emgu-WPF学习使用-识别二维码的位置

原文:Emgu-WPF学习使用-识别二维码的位置 ? ?参考链接:http://blog.csdn.net/gaobobo138968/article/details/47663607 ? ?我完全参照该链接实现了二维码的位置锁定,向原作者致敬. ? ?由于我使用的为最新版本的Emgu,很多封装函数调用方法有所变化,新手接触Emgu,尝试做了调整,部分参数也做了微调! ? ?我使用的Emgu版本:emgucv-windesktop 3.2.0.2682 ? ?最终我实现的效果图如下: 前台xam

C++-二维vector初始化大小方法-备忘

来源: C++——二维vector初始化大小方法 1.直接用初始化方法 名字为vec,大小为n*m,初始值为0的二维vector. vector<vector<int> > vec(n, vector<int>(m, 0)); 2.用resize()来控制大小 vector<vector<int> > vec; vec.resize(n);//n行 for (int i = 0; i < n; ++i){ vec[i].resize(m);