C++ 如何使用c+;中的std::sort()函数使用存储在映射中的数据对数组进行排序+;?

C++ 如何使用c+;中的std::sort()函数使用存储在映射中的数据对数组进行排序+;?,c++,sorting,C++,Sorting,我想使用哈希映射根据映射的值对字符串进行排序。但是我找不到合适的方法。请帮我找到一种方法。 这是我写的C++代码,请帮我写得更好 我想知道如何通过传递用于排序的数据结构来使用std::sort() #include<bits/stdc++.h> using namespace std; unordered_map<char,int>m; bool h(char a,char b) { return m[a]<=m[b]; } int main() {

我想使用哈希映射根据映射的值对字符串进行排序。但是我找不到合适的方法。请帮我找到一种方法。 这是我写的C++代码,请帮我写得更好 我想知道如何通过传递用于排序的数据结构来使用std::sort()

#include<bits/stdc++.h>
using namespace std;
unordered_map<char,int>m;
bool h(char a,char b)
{
    return m[a]<=m[b];
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        //unordered_map<char,int>m;
        for(int i=1;i<=26;i++)
        {
            char a;
            cin>>a;
            m[a]=i;
        }
        string s;
        cin>>s;
        sort(s.begin(),s.end(),h);
        cout<<s<<endl;
        //m.erase(m.begin(),m.end());
        //cout<<endl<<m.size();
    }
}
#包括
使用名称空间std;
无序地图;
布尔h(字符a、字符b)
{
返回m[a]>t;
而(t--)
{
//无序地图;
对于(int i=1;i>a;
m[a]=i;
}
字符串s;
cin>>s;
排序(s.begin()、s.end()、h);
cout您的函数不满足严格的弱排序要求


返回m[a]我将假设推荐的输出行是您试图工作的

#include <unordered_map>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int main()
{
    cout << "enter number of times" << endl;
    int t;
    cin>>t;
    while(t--)
    {
        unordered_map<char,int>m;
        cout << "enter 26 characters" << endl;
        for(int i=1;i<=26;i++)
        {
            char a;
            cin>>a;
            m[a]=i;
        }
        cout << "enter a string" << endl;
        string s;
        cin>>s;
        sort(s.begin(),s.end(), [&](char a, char b)
        {
            return m[a]<m[b];
        });
        cout<<s<<endl;
        m.erase(m.begin(),m.end());
        cout<<endl<<m.size();
    }
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
库特;
而(t--)
{
无序地图;

cout您的代码不可编译。请发布一篇文章“根据映射的值对字符串进行排序”是什么意思?请明确说明您想要解决的问题、预期结果以及您得到的错误和/或可观察到的行为。想法是什么?根据散列图中存储的任意权重对一些字母进行排序?您可以更好地呈现问题。它需要输入、预期输出、实际输出和可编译代码…a已经提到了。没有任何答案有用吗?在这种情况下,你能澄清这个问题吗?
for(int i = 0; i <= 'Z'-'A'; i++)
#include <unordered_map>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int main()
{
    cout << "enter number of times" << endl;
    int t;
    cin>>t;
    while(t--)
    {
        unordered_map<char,int>m;
        cout << "enter 26 characters" << endl;
        for(int i=1;i<=26;i++)
        {
            char a;
            cin>>a;
            m[a]=i;
        }
        cout << "enter a string" << endl;
        string s;
        cin>>s;
        sort(s.begin(),s.end(), [&](char a, char b)
        {
            return m[a]<m[b];
        });
        cout<<s<<endl;
        m.erase(m.begin(),m.end());
        cout<<endl<<m.size();
    }
}