gpt4 book ai didi

c++ - 是否可以使用 std::sort 按词典顺序排序?

转载 作者:行者123 更新时间:2023-11-30 01:15:34 25 4
gpt4 key购买 nike

我的问题是这样的:

  1. 一开始你必须插入一定数量的数字。
  2. 下一个程序计算您在第一步中插入的数字的总和。
  3. 所有分数都插入到称为 vec 的 vector 中

问题是这样的:在程序结束时,您在步骤 1 中插入的所有数字都必须根据它们的数字总和进行排序(按升序排序)。

请注意!例如,如果两个数字(例如 123 和 12300)具有相同的数字总和,则必须按字典顺序对它们进行排序。

我不想自己创建函数构建,但我想使用库中的“排序”函数,但我对此有疑问..是否也可以使用排序函数来按字典顺序排序?有人可以帮助我吗?输入示例:

6 
13
36
27
12
4
123

预期输出:

12
13
4
123
27
36

我的代码:

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

int main()
{
vector<vector<int> > vec;
int num;
int n;
cin >> n;

for (int i = 0; i < n; i++)
{
cin >> num;
vector<int> row;

row.push_back(num);

//conversion int to string:
ostringstream ss;
ss << num;
string str = ss.str();

int sum = 0;
for (int g = 0; g < str.length(); g++){
int pom = str[g] - '0';
sum += pom;
}

row.push_back(sum);
vec.push_back(row);
row.clear();
}

//sort(vec[0][0], vec[vec.size()][0]);

for (int i = 0; i < vec.size(); i++){
for (int j = 0; j < 2; j++){
//cout << vec[i][j] << " ";
}
cout << vec[i][0] << endl;
}



system("pause");
return 0;
}

最佳答案

您可以将每个数字存储为字符串,但也可以预先计算其数字和并将两者保存在 pair<int,string> 中, 然后将它们放入 vector<pair<int,string>sort它。 无需自定义比较器,即 std::pair 的那个完全按照您的意愿行事。

// note: std::pair<std::string,int> would not work
typedef std::pair<int,std::string> number;
std::vector<number> numbers;

// fill numbers such that number::first holds the digit sum
// and number::second the number as string.
// this is similar to your code

std::sort(numbers.begin(), numbers.end());

// now numbers are ordered as you want them

关于c++ - 是否可以使用 std::sort 按词典顺序排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28254456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com