C++ 쌍의 벡터

C Ssang Ui Begteo



C++에서 벡터는 동적으로 크기를 조정하여 요소를 효율적으로 조작할 수 있는 다목적 컨테이너입니다. 쌍은 관련 데이터를 연결하고 관리하는 편리한 수단을 제공하는 두 개의 이기종 개체를 보유할 수 있는 간단한 컨테이너입니다. 이러한 쌍이 벡터 내에서 구성되면 개발자는 키-값 쌍의 동적 컬렉션 또는 두 개의 개별 요소의 다른 조합을 생성할 수 있는 기능을 얻게 됩니다.

이 데이터 구조는 키-값 쌍을 처리하거나 엔터티 간의 관계를 나타낼 때와 같이 요소를 쌍으로 저장해야 하는 시나리오에서 특히 유용합니다. 이 기사에서는 쌍으로 구성된 C++ 벡터의 개념을 살펴보고 실제 적용을 설명하기 위한 다양한 예를 살펴보겠습니다.







예제 1: 기본 사용법: 쌍 벡터에 대한 반복

학생 이름과 해당 연령을 나타내는 쌍의 벡터를 만드는 기본 예를 고려해 보겠습니다. 쌍으로 구성된 벡터를 반복하는 것은 일반 벡터를 반복하는 것과 유사합니다. 반복자나 범위 기반 'for' 루프를 사용하여 벡터 내의 각 쌍을 검색할 수 있습니다.



이 예는 의미 있는 맥락에서 '쌍으로 구성된 벡터'의 구문을 보여줍니다.



#include
#include <벡터>
#include <유틸리티>

정수 메인 ( ) {

표준::벡터 < 표준::쌍 < 표준::문자열, 정수 >> 학생데이터;

학생데이터.push_back ( 표준::make_pair ( '아담' , 이십 ) ) ;
학생데이터.push_back ( 표준::make_pair ( '청구서' , 22 ) ) ;
학생데이터.push_back ( 표준::make_pair ( '백인' , 이십 일 ) ) ;

표준::cout << '학생 데이터: \N ' ;
~을 위한 ( const 자동 & 학생 : 학생데이터 ) {
표준::cout << '이름: ' << 학생.첫번째 << ', 나이: ' << 학생.두 번째 << 표준::endl;
}

반품 0 ;
}


이 C++ 코드 조각에서는 세 가지 필수 헤더 파일, 즉 입력 및 출력 작업을 위한 ' ', 벡터 컨테이너를 활용하는 '<벡터>', 'std::에 액세스하는 ''를 포함하는 것으로 시작합니다. 쌍” 템플릿. 이러한 헤더를 통해 프로그램에 필수적인 기능을 사용할 수 있습니다.

앞으로는 main() 함수 내에서 'std::Vector' 컨테이너를 사용하여 'studentData'라는 벡터를 선언합니다. 이 벡터는 각 쌍이 학생의 이름('std::string'으로 표시됨)과 나이('int' 정수)를 캡슐화하는 쌍을 저장하도록 설계되었습니다. 그런 다음 'studentData' 벡터를 세 쌍으로 채웁니다. 'push_back' 기능을 사용하면 쌍이 벡터 끝에 추가되어 크기가 동적으로 조정됩니다. 그런 다음 루프는 'studentData'를 반복하여 각 학생의 이름과 나이를 추출하고 인쇄합니다. 출력에는 구조화된 표현을 강조하는 '학생 데이터:'가 표시됩니다. 학생 이름과 나이가 별도로 인쇄되어 저장된 데이터를 명확하게 보여줍니다.

예 2: 쌍으로 구성된 벡터 정렬

쌍의 벡터 정렬은 특히 키-값 연관을 처리할 때 일반적인 작업입니다. 이 목적으로 ' ' 헤더의 'std::sort' 함수를 사용할 수 있습니다. 첫 번째 요소와 두 번째 요소를 기반으로 쌍의 벡터를 정렬하는 방법을 살펴보겠습니다.

#include
#include <벡터>
#include <알고리즘>

정수 메인 ( ) {

표준::벡터 < 표준::쌍 < 표준::문자열, 정수 >> 정보;

info.push_back ( 표준::make_pair ( '베드로' , 열 다섯 ) ) ;
info.push_back ( 표준::make_pair ( '도라' , 29 ) ) ;
info.push_back ( 표준::make_pair ( '한나' , 이십 ) ) ;

표준::cout << '원본 정보: \N ' ;
~을 위한 ( const 자동 & 항목 : 정보 ) {
표준::cout << '이름: ' << 입장.첫번째 << ', 나이: ' << 항목.초 << 표준::endl;
}


표준::정렬 ( info.begin ( ) , 정보.끝 ( ) ) ;

표준::cout << ' \N 정렬된 정보: \N ' ;
~을 위한 ( const 자동 & 항목 : 정보 ) {
표준::cout << '나이: ' << 항목.초 << ', 이름: ' << 입장.첫번째 << 표준::endl;
}

반품 0 ;
}


이 C++ 코드 예제에서는 쌍의 벡터를 사용하여 개인과 관련된 데이터, 특히 이름과 나이를 저장하고 조작합니다. main() 함수 내에서 'info of pair'라는 벡터를 초기화합니다. 그 후, 효율적인 쌍 생성을 위해 'push_back' 기능과 'std::make_pair'를 활용하여 각각 고유한 사람의 이름과 나이를 포함하는 세 쌍으로 이 벡터를 채웁니다.

'원본 정보'를 콘솔에 출력합니다. 여기에는 '정보' 벡터를 반복하고 각 쌍의 구성 요소를 인쇄하는 작업이 포함됩니다. 그런 다음 'std::sort' 알고리즘을 활용하여 각 쌍의 첫 번째 요소(이 경우 이름)를 비교하는 쌍의 기본 비교 연산자를 기반으로 'info' 벡터를 재배열합니다. 정렬 작업 후에는 정렬된 정보를 인쇄하여 수정된 '정보' 벡터를 다시 반복합니다. 이번에는 출력에서 ​​연령 우선 순서를 강조하여 정렬 프로세스의 결과를 보여줍니다.

예 3: 다양한 유형의 벡터 결합

두 벡터의 정보를 결합해야 하는 상황이 발생할 수 있습니다. 쌍으로 구성된 벡터는 두 벡터의 요소 간 연관을 유지하는 데 도움이 될 수 있습니다.

#include
#include <벡터>

정수 메인 ( ) {
표준::벡터 < 표준::문자열 > 도시 = { '뉴욕' , '파리' , '도쿄' } ;
표준::벡터 < 정수 > 인구 = { 8175133 , 2140526 , 37435191 } ;

표준::벡터 < 표준::쌍 < 표준::문자열, 정수 >> 도시인구쌍;

~을 위한 ( size_t 나 = 0 ; 나 < 표준::분 ( 도시.크기 ( ) , 인구.크기 ( ) ) ; ++나 ) {
cityPopulationPairs.push_back ( { 도시 [ ] , 인구 [ ] } ) ;
}

표준::cout << '도시-인구 쌍:' << 표준::endl;
~을 위한 ( const 자동 & 쌍 : cityPopulationPairs ) {
표준::cout << '도시: ' << 쌍.첫번째 << ', 인구: ' << 쌍.초 << 표준::endl;
}

반품 0 ;
}


코드의 'main' 함수에는 도시 이름을 저장하는 'cities'와 해당 인구 값을 저장하는 'populations'라는 두 개의 벡터가 선언되어 있습니다.

세 번째 벡터인 'cityPopulationPairs'는 도시 쌍과 해당 인구를 저장하도록 정의됩니다. 각 쌍은 'std::pair'입니다. 여기서 'std::string'은 도시 이름을 나타내고 'int'는 인구를 나타냅니다. 그런 다음 'std::min'을 사용하여 벡터(도시 및 인구)에 대해 'for' 루프 반복을 사용하여 루프가 두 벡터 크기 중 더 작은 크기를 초과하는 요소에 액세스하지 않도록 합니다. 루프 내에서 도시-인구 정보 쌍이 생성되어 'cityPopulationPairs' 벡터에 추가됩니다.

정보를 결합한 후 또 다른 'for' 루프를 사용하여 'cityPopulationPairs'에 저장된 쌍을 반복합니다. 결합된 데이터는 'std::cout'을 사용하여 표준 출력에 표시되며, 이는 각 도시와 해당 인구를 명확하게 나타냅니다.

예 4: 최대값과 최소값 찾기

데이터 세트 내의 최소값과 최대값을 식별하는 것은 알고리즘 및 통계 작업의 일반적인 요구 사항입니다. 쌍의 벡터를 사용하여 시퀀스의 최대값과 최소값을 모두 추적할 수 있습니다.

#include
#include <벡터>
#include <알고리즘>

정수 메인 ( ) {
표준::벡터 < 정수 > 숫자 = { 5 , 12 , 18 , , 7 , 4 , 33 } ;

표준::벡터 < 표준::쌍 < 너, 너 >> minMaxPairs;

표준::정렬 ( 숫자.시작 ( ) , 숫자.끝 ( ) ) ;

minMaxPairs.push_back ( { 숫자.앞 ( ) , 숫자.뒤로 ( ) } ) ;

표준::cout << '최소-최대 쌍:' << 표준::endl;
~을 위한 ( const 자동 & 쌍 : minMaxPairs ) {
표준::cout << '분: ' << 쌍.첫번째 << ', 최대: ' << 쌍.초 << 표준::endl;
}

반품 0 ;
}


제공된 C++ 코드는 정수 벡터에서 최소값과 최대값을 찾은 다음 이러한 값을 쌍의 벡터에 저장하는 프로세스를 보여줍니다. 'numbers'라는 벡터는 처음에 정수 세트로 선언되고 초기화됩니다. 데이터 세트의 최소값과 최대값을 효율적으로 식별하기 위해 프로그램은 알고리즘 라이브러리의 'std::sort' 함수를 활용합니다.

이 기능은 요소를 오름차순으로 정렬하여 데이터 세트의 최소값과 최대값을 모두 식별하는 프로세스를 단순화하는 것을 목표로 합니다. 정렬 작업은 숫자.begin() 및 숫자.end()를 범위 매개변수로 사용하여 '숫자' 벡터에 적용됩니다. 정렬 단계 후에 프로그램은 계산된 최소값과 최대값을 저장하기 위해 쌍의 벡터 'minMaxPairs'를 생성합니다. 그런 다음 'push_back' 함수를 사용하여 정렬된 숫자 벡터의 첫 번째(최소) 및 마지막(최대) 요소를 포함하는 단일 쌍을 추가합니다. 마지막으로 프로그램은 'minMaxPairs' 벡터를 반복하고 최소값과 최대값을 표시하여 결과를 출력합니다.

결론

결론적으로 C++ 쌍 벡터는 강력하고 유연한 데이터 구조로 나타나 프로그래밍 작업에 다양성을 더해줍니다. 구문과 실제 적용에 대한 자세한 탐색을 통해 이 컨테이너가 키-값 연관을 구성하고, 다양한 벡터의 정보를 결합하고, 최소값과 최대값을 추적하는 데 어떻게 도움이 되는지 살펴보았습니다.