Wektor par w języku C++

Wektor Par W Jezyku C



W C++ wektor jest wszechstronnym kontenerem, który może dynamicznie zmieniać swój rozmiar, co pozwala na efektywną manipulację elementami. Para to prosty kontener, który może pomieścić dwa heterogeniczne obiekty, co zapewnia wygodny sposób kojarzenia powiązanych danych i zarządzania nimi. Kiedy te pary są zorganizowane w wektorze, programiści zyskują możliwość tworzenia dynamicznych kolekcji par klucz-wartość lub dowolnej innej kombinacji dwóch odrębnych elementów.

Ta struktura danych jest szczególnie przydatna w scenariuszach, w których elementy muszą być przechowywane w parach, na przykład w przypadku par klucz-wartość lub podczas przedstawiania relacji między jednostkami. W tym artykule przyjrzymy się koncepcji wektora par w języku C++ i przeanalizujemy różne przykłady ilustrujące jego praktyczne zastosowania.







Przykład 1: Podstawowe użycie: iteracja po wektorze par

Rozważmy podstawowy przykład, w którym tworzymy wektor par reprezentujących imiona uczniów i odpowiadający im wiek. Iteracja po wektorze par jest podobna do iteracji po wektorze regularnym. Do pobrania każdej pary w wektorze można zastosować iteratory lub pętle „for” oparte na zakresie.



Ten przykład ilustruje składnię „wektora par” w znaczącym kontekście.



#include
#uwzględnij
#include

int główny ( ) {

std::wektor < std:: para < std::string, int >> Dane studenta;

studentData.push_back ( std::make_pair ( „Adam” , 20 ) ) ;
studentData.push_back ( std::make_pair ( 'Rachunek' , 22 ) ) ;
studentData.push_back ( std::make_pair ( „Charlie” , dwadzieścia jeden ) ) ;

std::cout << „Dane ucznia: \N ' ;
Do ( stała auto & student: dane studenta ) {
std::cout << 'Nazwa: ' << student.pierwszy << ', Wiek: ' << student.drugi << std::endl;
}

powrót 0 ;
}


W tym fragmencie kodu C++ zaczynamy od dołączenia trzech podstawowych plików nagłówkowych: „ ” do operacji wejściowych i wyjściowych, „” do korzystania z kontenera wektorów oraz „” do uzyskiwania dostępu do „std::: szablon pary. Nagłówki te umożliwiają nam korzystanie z funkcjonalności niezbędnych dla naszego programu.





Idąc dalej, w funkcji main() deklarujemy wektor o nazwie „studentData” przy użyciu kontenera „std::vector”. Ten wektor jest przeznaczony do przechowywania par, przy czym każda para zawiera imię i nazwisko ucznia (reprezentowane jako „std::string”) i jego wiek (liczba całkowita „int”). Następnie zapełniamy wektor „studentData” trzema parami. Za pomocą funkcji „push_back” na końcu wektora dodawane są pary, dynamicznie dostosowując jego wielkość. Następnie pętla wykonuje iterację po „studentData”, wyodrębniając i drukując imię i wiek każdego ucznia. Dane wyjściowe wyświetlają „Dane ucznia:”, co podkreśla uporządkowaną reprezentację. Imiona i nazwiska uczniów oraz ich wiek wydrukowane są osobno, w czytelny sposób prezentując zapisane dane.



Przykład 2: Sortowanie wektora par

Sortowanie wektora par jest powszechną operacją, szczególnie w przypadku powiązań klucz-wartość. Można w tym celu wykorzystać funkcję „std::sort” z nagłówka „ ”. Zobaczmy jak posortować wektor par na podstawie pierwszego i drugiego elementu:

#include
#uwzględnij
#include

int główny ( ) {

std::wektor < std:: para < std::string, int >> informacje;

info.push_back ( std::make_pair ( 'Piotr' , piętnaście ) ) ;
info.push_back ( std::make_pair ( „Dora” , 29 ) ) ;
info.push_back ( std::make_pair ( „Hanna” , 20 ) ) ;

std::cout << „Oryginalna informacja: \N ' ;
Do ( stała auto & wpis: informacja ) {
std::cout << 'Nazwa: ' << wpis.pierwszy << ', Wiek: ' << wpis.sekunda << std::endl;
}


standardowe::sortowanie ( info.rozpocznij ( ) , informacja.koniec ( ) ) ;

std::cout << ' \N Posortowane informacje: \N ' ;
Do ( stała auto & wpis: informacja ) {
std::cout << 'Wiek: ' << wpis.sekunda << ', Nazwa: ' << wpis.pierwszy << std::endl;
}

powrót 0 ;
}


W tym przykładzie kodu C++ pracujemy z wektorem par do przechowywania i manipulowania danymi dotyczącymi poszczególnych osób, w szczególności ich imionami i wiekami. Inicjujemy wektor o nazwie „informacje o parach” w funkcji main(). Następnie zapełniamy ten wektor trzema parami, z których każda zawiera imię i wiek odrębnej osoby, wykorzystując funkcję „push_back” i „std::make_pair” w celu wydajnego tworzenia par.

Wysyłamy „Oryginalne informacje” do konsoli. Obejmuje to iterację po wektorze „info” i wydrukowanie komponentów każdej pary. Następnie używamy algorytmu „std::sort” do zmiany układu wektora „info” w oparciu o domyślny operator porównania dla par, który porównuje pierwszy element każdej pary (w tym przypadku nazwy). Po operacji sortowania ponownie iterujemy po zmodyfikowanym wektorze „info”, drukując posortowane informacje. Tym razem produkcja kładzie nacisk na uporządkowanie według wieku, ilustrując wynik procesu sortowania.

Przykład 3: Łączenie wektorów różnych typów

Możesz napotkać sytuacje, w których musisz połączyć informacje z dwóch wektorów. Wektor par może pomóc w utrzymaniu powiązania między elementami z dwóch wektorów.

#include
#uwzględnij

int główny ( ) {
std::wektor < std::string > miasta = { 'Nowy Jork' , 'Paryż' , 'Tokio' } ;
std::wektor < wew > populacja = { 8175133 , 2140526 , 37435191 } ;

std::wektor < std:: para < std::string, int >> miastoPopulacjaPary;

Do ( rozmiar_t i = 0 ; I < std::min ( miasta.rozmiar ( ) , populacja.rozmiar ( ) ) ; ++ja ) {
cityPopulationPairs.push_back ( { miasta [ I ] , populacje [ I ] } ) ;
}

std::cout << „Pary miasto-ludność:” << std::endl;
Do ( stała auto & para : miastoPopulacjaPary ) {
std::cout << 'Miasto: ' << para.pierwsza << ', Ludność: ' << para.sekunda << std::endl;
}

powrót 0 ;
}


W „main” funkcji kodu zadeklarowane są dwa wektory: „cities” do przechowywania nazw miast i „populations” do przechowywania odpowiednich wartości populacji.

Trzeci wektor, „cityPopulationPairs”, jest zdefiniowany do przechowywania par miast i ich odpowiednich populacji. Każda para to „std::pair”, gdzie „std::string” reprezentuje nazwę miasta, a „int” reprezentuje populację. Następnie używamy iteracji pętli „for” po wektorach (miastach i populacjach), używając „std::min”, aby mieć pewność, że pętla nie uzyska dostępu do elementów wykraczających poza mniejszy z dwóch rozmiarów wektorów. Wewnątrz pętli tworzone są pary informacji o populacji miasta i dołączane do wektora „cityPopulationPairs”.

Po połączeniu informacji używana jest kolejna pętla „for” do iteracji po parach przechowywanych w „cityPopulationPairs”. Połączone dane są następnie wyświetlane na standardowym wyjściu przy użyciu „std::cout”, wyraźnie reprezentującego każde miasto i odpowiadającą mu populację.

Przykład 4: Znajdowanie wartości maksymalnej i minimalnej

Identyfikacja minimalnych i maksymalnych wartości w zbiorze danych jest powszechnym wymogiem w operacjach algorytmicznych i statystycznych. Możemy użyć wektora par, aby śledzić zarówno wartości maksymalne, jak i minimalne w sekwencji:

#include
#uwzględnij
#include

int główny ( ) {
std::wektor < wew > liczby = { 5 , 12 , 18 , 3 , 7 , 4 , 33 } ;

std::wektor < std:: para < ty ty >> minMaxPary;

standardowe::sortowanie ( liczby.rozpocznij ( ) , liczby.koniec ( ) ) ;

minMaxPairs.push_back ( { liczby.przód ( ) , liczby.tył ( ) } ) ;

std::cout << „Pary Min. Maks.:” << std::endl;
Do ( stała auto & para: minMaxPairs ) {
std::cout << „Min:” << para.pierwsza << ', Maks: ' << para.sekunda << std::endl;
}

powrót 0 ;
}


Dostarczony kod C++ demonstruje proces znajdowania wartości minimalnych i maksymalnych w wektorze liczb całkowitych, a następnie zapisywania tych wartości w wektorze par. Wektor o nazwie „liczby” jest początkowo deklarowany i inicjowany zbiorem liczb całkowitych. Aby sprawnie identyfikować wartości minimalne i maksymalne w zbiorze danych, program wykorzystuje funkcję „std::sort” z biblioteki algorytmu.

Funkcja ta ma na celu uporządkowanie elementów w kolejności rosnącej, upraszczając proces identyfikacji zarówno wartości minimalnej, jak i maksymalnej w zbiorze danych. Operacja sortowania jest stosowana do wektora „liczby” przy użyciu liczb.begin() i liczb.end() jako parametrów zakresu. Po etapie sortowania program tworzy wektor par „minMaxPairs” do przechowywania obliczonych wartości minimalnych i maksymalnych. Następnie stosuje się funkcję „push_back” w celu dodania pojedynczej pary zawierającej pierwszy (minimalny) i ostatni (maksimum) element posortowanego wektora liczb. Na koniec program wyprowadza wynik, iterując po wektorze „minMaxPairs” i wyświetlając wartości minimalne i maksymalne.

Wniosek

Podsumowując, wektor par C++ okazuje się potężną i elastyczną strukturą danych, dodającą warstwę wszechstronności do zadań programistycznych. Dzięki szczegółowej analizie jego składni i praktycznych zastosowań widzieliśmy, jak ten kontener pomaga organizować powiązania klucz-wartość, łączyć informacje z różnych wektorów oraz śledzić wartości minimalne i maksymalne.