Vector C++ của các cặp

Vector C Cua Cac Cap



Trong C++, vectơ là một vùng chứa linh hoạt có thể tự động thay đổi kích thước, cho phép thao tác các phần tử một cách hiệu quả. Trong khi một cặp là một thùng chứa đơn giản có thể chứa hai đối tượng không đồng nhất, cung cấp phương tiện thuận tiện để liên kết và quản lý dữ liệu liên quan. Khi các cặp này được sắp xếp trong một vectơ, nhà phát triển có khả năng tạo bộ sưu tập động gồm các cặp khóa-giá trị hoặc bất kỳ sự kết hợp nào khác của hai phần tử riêng biệt.

Cấu trúc dữ liệu này đặc biệt hữu ích trong các tình huống trong đó các phần tử phải được lưu trữ dưới dạng cặp, chẳng hạn như khi xử lý các cặp khóa-giá trị hoặc biểu thị mối quan hệ giữa các thực thể. Trong bài viết này, chúng ta sẽ khám phá khái niệm về vectơ cặp C++ và khám phá các ví dụ khác nhau để minh họa các ứng dụng thực tế của nó.







Ví dụ 1: Cách sử dụng cơ bản: Lặp lại một vectơ các cặp

Hãy xem xét một ví dụ cơ bản trong đó chúng ta tạo một vectơ các cặp đại diện cho tên học sinh và độ tuổi tương ứng của chúng. Việc lặp qua một vectơ các cặp cũng tương tự như việc lặp trên một vectơ thông thường. Người ta có thể sử dụng các vòng lặp hoặc vòng lặp “for” dựa trên phạm vi để truy xuất từng cặp trong vectơ.



Ví dụ này trình bày cú pháp của “vectơ cặp” trong ngữ cảnh có ý nghĩa.



#include
#include
#include

int chính ( ) {

std::vectơ < std::cặp < std::chuỗi, int >> dữ liệu sinh viên;

sinh viênData.push_back ( std::make_pair ( 'Adam' , hai mươi ) ) ;
sinh viênData.push_back ( std::make_pair ( 'Hóa đơn' , 22 ) ) ;
sinh viênData.push_back ( std::make_pair ( 'Charlie' , hai mươi mốt ) ) ;

std::cout << 'Dữ liệu học sinh: \N ' ;
( const tự động & sinh viên : dữ liệu sinh viên ) {
std::cout << 'Tên: ' << sinh viên.first << ', Tuổi: ' << sinh viên.thứ hai << std::endl;
}

trở lại 0 ;
}


Trong đoạn mã C++ này, chúng tôi bắt đầu bằng cách bao gồm ba tệp tiêu đề thiết yếu: “ ” cho các hoạt động đầu vào và đầu ra, “” để sử dụng vùng chứa vectơ và “” để truy cập vào “std:: mẫu cặp”. Những tiêu đề này cho phép chúng tôi sử dụng các chức năng cần thiết cho chương trình của mình.





Tiếp theo, trong hàm main(), chúng ta khai báo một vectơ có tên “studentData” bằng cách sử dụng vùng chứa “std::vector”. Vectơ này được thiết kế để lưu trữ các cặp trong đó mỗi cặp bao gồm tên của một học sinh (được biểu thị dưới dạng “std::string”) và tuổi của chúng (một số nguyên “int”). Sau đó, chúng tôi điền vào vectơ “studentData” ba cặp. Bằng cách sử dụng chức năng “push_back”, các cặp được thêm vào cuối vectơ, điều chỉnh kích thước của nó một cách linh hoạt. Sau đó, một vòng lặp sẽ lặp qua “studentData”, trích xuất và in tên và tuổi của từng học sinh. Đầu ra hiển thị “Dữ liệu học sinh:” nhấn mạnh vào cách trình bày có cấu trúc. Tên, tuổi học sinh được in riêng, trình bày rõ ràng dữ liệu lưu trữ.



Ví dụ 2: Sắp xếp Vector theo cặp

Sắp xếp một vectơ các cặp là một thao tác phổ biến, đặc biệt khi xử lý các liên kết khóa-giá trị. Chức năng “std::sort” từ tiêu đề “ ” có thể được sử dụng cho mục đích này. Hãy xem cách sắp xếp một vectơ các cặp dựa trên phần tử thứ nhất và thứ hai:

#include
#include
#include

int chính ( ) {

std::vectơ < std::cặp < std::chuỗi, int >> thông tin;

thông tin.push_back ( std::make_pair ( 'Peter' , mười lăm ) ) ;
thông tin.push_back ( std::make_pair ( 'Dora' , 29 ) ) ;
thông tin.push_back ( std::make_pair ( 'Hanna' , hai mươi ) ) ;

std::cout << 'Thông tin gốc: \N ' ;
( const tự động & mục: thông tin ) {
std::cout << 'Tên: ' << entry.first << ', Tuổi: ' << entry.second << std::endl;
}


std::sắp xếp ( thông tin.bắt đầu ( ) , thông tin.end ( ) ) ;

std::cout << ' \N Thông tin được sắp xếp: \N ' ;
( const tự động & mục: thông tin ) {
std::cout << 'Tuổi: ' << entry.second << ', Tên: ' << entry.first << std::endl;
}

trở lại 0 ;
}


Trong ví dụ về mã C++ này, chúng ta đang làm việc với một vectơ cặp để lưu trữ và thao tác dữ liệu liên quan đến các cá nhân, cụ thể là tên và tuổi của họ. Chúng ta khởi tạo một vectơ có tên “thông tin về các cặp” trong hàm main(). Sau đó, chúng tôi điền vào vectơ này ba cặp, mỗi cặp chứa tên và tuổi của một người riêng biệt, sử dụng hàm “push_back” và “std::make_pair” để tạo cặp hiệu quả.

Chúng tôi xuất “Thông tin gốc” ra bảng điều khiển. Điều này liên quan đến việc lặp qua vectơ “thông tin” và in các thành phần của từng cặp. Sau đó, chúng tôi sử dụng thuật toán “std::sort” để sắp xếp lại vectơ “thông tin” dựa trên toán tử so sánh mặc định cho các cặp so sánh phần tử đầu tiên của mỗi cặp (trong trường hợp này là tên). Sau thao tác sắp xếp, chúng ta lại lặp qua vectơ “thông tin” đã sửa đổi bằng cách in thông tin đã sắp xếp. Lần này, kết quả đầu ra nhấn mạnh đến thứ tự độ tuổi đầu tiên, minh họa kết quả của quá trình sắp xếp.

Ví dụ 3: Kết hợp các vectơ thuộc các loại khác nhau

Bạn có thể gặp phải một số tình huống trong đó bạn phải kết hợp thông tin từ hai vectơ. Một vectơ cặp có thể giúp duy trì sự liên kết giữa các phần tử của hai vectơ.

#include
#include

int chính ( ) {
std::vectơ < std::chuỗi > thành phố = { 'Newyork' , 'Paris' , 'Tokyo' } ;
std::vectơ < int > quần thể = { 8175133 , 2140526 , 37435191 } ;

std::vectơ < std::cặp < std::chuỗi, int >> thành phốCặp dân số;

( kích thước_t tôi = 0 ; Tôi < std::min ( thành phố.size ( ) , quần thể.size ( ) ) ; ++tôi ) {
cityPopulationPairs.push_back ( { các thành phố [ Tôi ] , quần thể [ Tôi ] } ) ;
}

std::cout << 'Cặp thành phố-dân số:' << std::endl;
( const tự động & cặp: thành phốPopulationPairs ) {
std::cout << 'Thành phố: ' << cặp.first << ', Dân số: ' << cặp.giây << std::endl;
}

trở lại 0 ;
}


Trong hàm “chính” của mã, hai vectơ được khai báo: “thành phố” để lưu trữ tên thành phố và “dân số” để lưu trữ các giá trị dân số tương ứng.

Vectơ thứ ba, “cityPopulationPairs”, được định nghĩa để lưu trữ các cặp thành phố và quần thể tương ứng của chúng. Mỗi cặp là “std::pair” trong đó “std::string” đại diện cho tên thành phố và “int” đại diện cho dân số. Sau đó, chúng tôi sử dụng phép lặp vòng lặp “for” trên các vectơ (thành phố và quần thể) bằng cách sử dụng “std::min” để đảm bảo rằng vòng lặp không truy cập vào các phần tử nằm ngoài kích thước nhỏ hơn trong hai kích thước vectơ. Bên trong vòng lặp, các cặp thông tin về dân số thành phố được tạo và gắn vào vectơ “cityPopulationPairs”.

Sau khi kết hợp thông tin, một vòng lặp “for” khác được sử dụng để lặp qua các cặp được lưu trữ trong “cityPopulationPairs”. Sau đó, dữ liệu kết hợp được hiển thị trên đầu ra tiêu chuẩn bằng cách sử dụng “std::cout”, thể hiện rõ ràng từng thành phố và dân số tương ứng của thành phố đó.

Ví dụ 4: Tìm giá trị tối đa và tối thiểu

Xác định các giá trị tối thiểu và tối đa trong tập dữ liệu là một yêu cầu phổ biến trong các hoạt động thuật toán và thống kê. Chúng ta có thể sử dụng vectơ cặp để theo dõi cả giá trị lớn nhất và nhỏ nhất trong một chuỗi:

#include
#include
#include

int chính ( ) {
std::vectơ < int > số = { 5 , 12 , 18 , 3 , 7 , 4 , 33 } ;

std::vectơ < std::cặp < bạn, bạn >> minMaxPairs;

std::sắp xếp ( số.bắt đầu ( ) , số.end ( ) ) ;

minMaxPairs.push_back ( { số.front ( ) , số.back ( ) } ) ;

std::cout << 'Cặp tối thiểu-tối đa:' << std::endl;
( const tự động & cặp: minMaxPairs ) {
std::cout << 'Min:' << cặp.first << ', Max:' << cặp.giây << std::endl;
}

trở lại 0 ;
}


Mã C++ được cung cấp thể hiện quá trình tìm giá trị tối thiểu và tối đa trong vectơ số nguyên, sau đó lưu trữ các giá trị này trong vectơ cặp. Một vectơ có tên “số” ban đầu được khai báo và khởi tạo bằng một tập hợp các số nguyên. Để xác định một cách hiệu quả các giá trị tối thiểu và tối đa trong tập dữ liệu, chương trình sử dụng hàm “std::sort” từ thư viện thuật toán.

Hàm này nhằm mục đích sắp xếp các phần tử theo thứ tự tăng dần, đơn giản hóa quá trình xác định cả giá trị tối thiểu và tối đa trong tập dữ liệu. Hoạt động sắp xếp được áp dụng cho vectơ “số” bằng cách sử dụng số.begin() và number.end() làm tham số phạm vi. Sau bước sắp xếp, chương trình tạo một vectơ cặp, “minMaxPairs”, để lưu trữ các giá trị tối thiểu và tối đa được tính toán. Sau đó, hàm “push_back” được sử dụng để thêm một cặp chứa phần tử đầu tiên (tối thiểu) và cuối cùng (tối đa) của vectơ số đã sắp xếp. Cuối cùng, chương trình đưa ra kết quả bằng cách lặp qua vectơ “minMaxPairs” và hiển thị các giá trị tối thiểu và tối đa.

Phần kết luận

Tóm lại, vectơ cặp C++ nổi lên như một cấu trúc dữ liệu mạnh mẽ và linh hoạt, bổ sung thêm một lớp tính linh hoạt cho các tác vụ lập trình. Thông qua việc khám phá chi tiết về cú pháp và ứng dụng thực tế của nó, chúng tôi đã thấy cách vùng chứa này giúp tổ chức các liên kết khóa-giá trị, kết hợp thông tin từ các vectơ khác nhau và theo dõi các giá trị tối thiểu và tối đa.