C++ 如何根据另一个数组排列一个数组?
假设我有两个数组C++ 如何根据另一个数组排列一个数组?,c++,arrays,sorting,C++,Arrays,Sorting,假设我有两个数组 names[5]={a,b,c,d,e]; marks[5]={3,2,6,7,2}; 现在,我使用内置函数对marks数组进行排序。如何按照与marks数组相同的顺序排列names数组?使用STL中的std::pair生成一个数组(向量最好如下所示)。然后对成对数组进行排序。下面是一个例子(): #包括 #包括 #包括 #包括 使用名称空间std; int main() { 向量v; v、 推回({10,“约翰”}); v、 推回({5,“卡特琳娜”); 排序(v.b
names[5]={a,b,c,d,e];
marks[5]={3,2,6,7,2};
现在,我使用内置函数对marks数组进行排序。如何按照与marks数组相同的顺序排列names数组?使用STL中的std::pair生成一个数组(向量最好如下所示)。然后对成对数组进行排序。下面是一个例子():
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
向量v;
v、 推回({10,“约翰”});
v、 推回({5,“卡特琳娜”);
排序(v.begin(),v.end());
对于(int i=0;i由于每个名称显然都与一个标记关联,因此通常需要创建一个包含一个名称及其关联标记的struct
struct foo {
char name;
int mark;
};
然后我们创建一个数组,其中包括:
foo marks[] = { { 'a', 3},
{ 'b', 2},
{ 'c', 6},
{ 'd', 7},
{ 'e', 2}
};
然后我们对这些项目进行排序:
std::sort(std::begin(marks), std::end(marks),
[](foo const &a, foo const &b) { return a.mark < b.mark; });
“YuHao,语言是C++。你尝试过什么代码?我没有尝试过。我不知道该怎么做。我想能够访问同一索引的人的姓名和标记(标记(1)是姓名的标记[1 ])。@ BeRouGrdsSyrySuthMuthaA。我是初学者,所以你能把代码作为例子,我知道使用它。
std::sort(std::begin(marks), std::end(marks),
[](foo const &a, foo const &b) { return a.mark < b.mark; });
for (auto const &f : marks)
std::cout << f.name << "\t" << f.mark << "\n";