首页 > 解决方案 > 如何在 C++ 中对 3 对向量进行排序

问题描述

我已经在对向量中嵌入了对向量,以便能够在一对中包含 3 种数据类型(所有整数)。我现在无法按嵌入的对向量进行排序。谁能告诉我我做错了什么?

这是我的向量对:

vector < pair<int, pair<int,int> > > obj2;

这是我的排序功能:

bool sortby(const pair<int,int> &a,
               const pair<int,int> &b)
{
    return (a.first < b.first);
}

sort(vect.begin(), vect.end(), sortby)

标签: c++std-pair

解决方案


无需编写比较函数:

#include <cstddef>
#include <cstdlib>
#include <ctime>
#include <utility>
#include <vector>
#include <algorithm>
#include <iostream>


int main()
{
    std::srand(static_cast<unsigned>(std::time(nullptr)));

    std::vector<std::pair<int, std::pair<int, int> > > obj2;

    for (std::size_t i{}; i < 10; ++i)
        obj2.push_back(std::pair(rand() % 10, std::pair(rand() % 10, rand() % 10)));

    for (auto const & i : obj2)
        std::cout << i.first << ", " << i.second.first << ", " << i.second.second << '\n';
    std::cout.put('\n');

    std::sort(std::begin(obj2), std::end(obj2));

    for (auto const & i : obj2)
        std::cout << i.first << ", " << i.second.first << ", " << i.second.second << '\n';
    std::cout.put('\n');
}

推荐阅读