c++ - 如何在 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)
解决方案
无需编写比较函数:
#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');
}
推荐阅读
- javascript - react-grid-layout 中网格项的初始定位是随机生成的
- eclipse - 尝试修复缺少的工具栏后 Eclipse Neon 无法启动
- android - 在 Runnable 中调用意图会使 android studio 中的应用程序崩溃
- regex - HTML 页面中的模式匹配
- r - 重新排序 expss 表的列
- laravel-5.6 - 如何使用 SQLite 数据库在 phpdesktop 应用程序中运行 laravel5.6 应用程序
- typescript - 'Function' 类型的参数不能分配给 '(...args: any[]) => void' 类型的参数
- reactjs - 将所有 Meteor 用户传递给 Apollo 上下文
- javascript - AngularJS - 导入