의 내가 지금은 붙박이 기능을 사용하여 마크 배열을 정렬 두 배열 배열을 다른 배열로 배열하는 방법은 무엇입니까?
names[5]={a,b,c,d,e];
marks[5]={3,2,6,7,2};
있다고 가정 해 봅시다. 이름 배열을 마크 배열과 같은 순서로 정렬하려면 어떻게해야합니까?
의 내가 지금은 붙박이 기능을 사용하여 마크 배열을 정렬 두 배열 배열을 다른 배열로 배열하는 방법은 무엇입니까?
names[5]={a,b,c,d,e];
marks[5]={3,2,6,7,2};
있다고 가정 해 봅시다. 이름 배열을 마크 배열과 같은 순서로 정렬하려면 어떻게해야합니까?
각 이름은 분명히 마크와 연결되어 있으므로 일반적으로 하나의 이름과 관련 마크가 포함 된 struct
을 생성하려고합니다.
std::sort(std::begin(marks), std::end(marks),
[](foo const &a, foo const &b) { return a.mark < b.mark; });
참고 기준으로 정렬을 수행하는 방법을 지정합니다 마지막 조금 :
foo marks[] = { { 'a', 3},
{ 'b', 2},
{ 'c', 6},
{ 'd', 7},
{ 'e', 2}
};
그런 다음 우리가 그 항목을 정렬 :
struct foo {
char name;
int mark;
};
그런 다음 우리는 그 배열을 만들 각 foo
의 mark
필드 거기에서
우리는 수도 (예를 들어) 마크 값으로 순서대로 마크를 인쇄하려면 : 언어는 C++입니다
for (auto const &f : marks)
std::cout << f.name << "\t" << f.mark << "\n";
STL의 std :: pair를 사용하여 배열 (벡터는 아래 그림과 같이 좋음)을 만듭니다. 그런 다음 쌍의 배열을 정렬하십시오.
#include <iostream>
#include<vector>
#include<string>
#include <algorithm>
using namespace std;
int main()
{
vector<pair<int,string>> v;
v.push_back({10,"John"});
v.push_back({5,"Katarina"});
sort(v.begin(), v.end());
for(int i=0;i<v.size();++i)
{
cout<<v.at(i).first<<" "<<v.at(i).second<<endl;
}
return 0;
}
주 : 예는 C++ (11)를 사용하여 다음의 예 (try it live)이다. g ++로이 코드를 컴파일하려면 -std=c++11
플래그를 사용해야합니다.
감사합니다. @mustafa. 나는 초보자이므로 코드를 예제로 게시하여 사용법을 알 수 있습니다. –
@YuHao. –
시도한 코드는 무엇입니까? –
나는 아무 것도 시도하지 않았다. 나는 무엇을해야할지 모른다. 나는 동일한 색인을 가진 사람의 이름과 표식에 접근 할 수 있기를 원합니다 (표식 [1]은 이름 표식입니다 [1]). @benrudgers –