c++ - 排序值应按其名称显示
问题描述
我希望显示器上显示的所有数字都链接到它们旁边的名称。排序后的数字不应该像现在一样显示在右侧的列表中,而是显示名称(NPC 和 PC - 标签)。它是如何工作的?
int iniwerte[7]; // Array for the values by my LCD-displays
ui->lcdNumber_initiative_1->display(iniwerte[0]); // Each display got a value
ui->lcdNumber_initiative_2->display(iniwerte[1]);
ui->lcdNumber_initiative_3->display(iniwerte[2]);
ui->lcdNumber_initiative_4->display(iniwerte[3]);
ui->lcdNumber_initiative_5->display(iniwerte[4]);
std::sort(&iniwerte[0], &iniwerte[7], std::greater<int>()); // Sorting values
ui->reihenfolge->setNum(iniwerte[0]); // Sorted numbers are shown on the labels
ui->reihenfolge_2->setNum(iniwerte[1]);
ui->reihenfolge_3->setNum(iniwerte[2]);
ui->reihenfolge_4->setNum(iniwerte[3]);
ui->reihenfolge_5->setNum(iniwerte[4]);
正确的列表应该显示相关的名称而不是数字。
解决方案
- 定义结构。
struct label_val
{
std::string label;
int value;
}
- 通过重载大于运算符以根据标签进行比较,提供对该结构进行排序的规则。请参阅运算符重载的基本规则和习惯用法是什么?有关运算符重载的更多信息和智慧。
bool operator> (const label_val& lhs,
const label_val& rhs)
{
return lhs.label > rhs.label;
}
- 做一个 s 的容器
label_val
。用作std::array
示例,因为它最接近int iniwerte[7];
.
std::array<label_val, 7> iniwerte;
- 填写
iniwerte
最适合您的应用程序。 - 对吸盘进行排序。
std::sort(iniwerte.begin(), iniwerte.end(), std::greater<int>());
推荐阅读
- git-bash - 解决 Visual Studio 中的合并冲突已禁用
- c# - 绕过 UAC 以允许从非提升源拖放到我们提升的应用程序
- python - 从 Firebase 获取图像并创建 stripe.File
- angular - Ionic v4-为什么我的 get 函数返回未定义?
- angular - Angular 7 中的 i18n-iso-countries 根据当前语言显示国家/地区
- python - 我想检查字段是否以 .mov 结尾的 Zapier Python zap
- arrays - 来自字符串的bash数组仅保留分隔符之间的内容
- flask-sqlalchemy - 为什么当我将 SQLALCHEMY_DATABASE_URI 设置为“sqlite:///:memory:”时,我将其设置为配置中的路径?
- google-cloud-run - 如何在谷歌云运行中使用存储保险丝?
- javascript - 如何在 JavaScript 中创建一个简单的“悬停和变化”改进版本?