C++ 如何使用c+;中的std::sort()函数使用存储在映射中的数据对数组进行排序+;?
我想使用哈希映射根据映射的值对字符串进行排序。但是我找不到合适的方法。请帮我找到一种方法。 这是我写的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() {
#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();
}
}