Cùng tìm hiểu về cách so sánh mảng trong C++. Bạn sẽ học được cách so sánh 2 mảng trong C++ sau bài học này.
Có 2 phương pháp so sánh 2 mảng trong C++ như sau:
- So sánh 2 mảng trong C++ bằng cách đối chiếu từng cặp phần tử
- So sánh 2 mảng trong C++ bằng hàm memcmp
Lại nữa, các phương pháp này được dùng để so sánh mảng số trong C++. Để so sánh 2 mảng chuỗi, bạn có thể tham khảo bài viết sau:
Logic so sánh mảng trong C++
Để so sánh 2 mảng trong C++, điều kiện đầu tiên là 2 mảng đó cần phải có kiểu dữ liệu giống nhau. Ví dụ chúng ta có thể so sánh một mảng có kiểu int với một mảng khác có cùng kiểu int, nhưng lại không thể so sánh với một mảng khác nữa có kiểu float chẳng hạn.
Khác với khi so sánh 2 số, bạn không thể sử dụng các toán tử so sánh như =
hay !=
với mảng trong C++ được. Nếu chúng ta sử dụng các toán tử so sánh để so sánh mảng, thì kết quả trả về sẽ không được như mong đợi như sau:
|
Kết quả:
1 |
Trong đó 1 nghĩa là true (đúng) và 0 nghĩa là false (sai).
Có thể thấy trong phép so sánh thứ 3 đã không đưa ra được kết quả chính xác.
Để so sánh mảng trong C++, chúng ta không thể so sánh trực tiếp chúng như trên, mà cần phải so sánh từng cặp phần tử của chúng tại cùng vị trí index với nhau, hoặc là chuyển các mảng này sang dạng con trỏ của mảng, rồi tiến hành so sánh địa chỉ (address) của chúng trong bộ nhớ, với một trong 2 phương pháp mà Kiyoshi sẽ trình bày ở dưới đây.
So sánh mảng trong C++ bằng cách đối chiếu từng cặp phần tử
Cách đầu tiên và đơn giản, dễ hiểu nhất để so sánh mảng trong C++, đó chính là đối chiếu và kiểm tra từng cặp phần tử trong 2 mảng với nhau.
Nếu tất cả các cặp phần tử với vị trí tương ứng trong 2 mảng đều giống nhau thì hai mảng đó là bằng nhau. Ngược lại chỉ cần tồn tại một cặp phần tử có giá trị khác nhau, điều đó có nghĩa là 2 mảng đã cho không giống nhau.
Chúng ta sẽ sử dụng tới vòng lặp for với từng cặp phần tử và viết hàm trong chương trình so sánh mảng trong C++ như sau:
|
Kết quả phép so sánh mảng trong C++:
1 |
So sánh mảng trong C++ bằng hàm memcmp
Ngoài cách so sánh từng cặp phần tử trong 2 mảng như trên, chúng ta cũng có thể sử dụng hàm có sẵn memcmp để so sánh 2 mảng trong C++.
Hàm memcmp là một hàm trong header file cstring, vốn được sử dụng để so sánh nội dung của các vùng trên bộ nhớ với nhau. Ứng dụng hàm này, chúng ta có thể so sánh các vùng trên bộ nhớ được sử dụng để chứa các mảng, và qua đó có thể so sánh gián tiếp mảng trong C++.
Chúng ta sử dụng hàm memcmp với cú pháp sau đây:
int memcmp(const void*
s1, const void*
s2, size_t size);
Trong đó:
s1
,s2
là tên hai mảng cần so sánh, và chúng ta không chỉ định trực tiếp 2 mảng này trong đối số của hàm, mà sẽ sử dụng con trỏ mảng của chúng.size
là phạm vi so sánh trên bộ nhớ (byte). Lưu ý đây là phạm vi tính bởi byte chứ không phải là số phần tử trong mảng đâu nhé.
Hàm memcmp thường được sử dụng để so sánh quan hệ lớn nhỏ giữa 2 vùng trong bộ nhớ, tuy nhiên bằng cách kiểm tra giá trị trả về của nó là 0 hay là một số khác 0 thì chúng ta cũng có thể so sánh xem 2 mảng trong C++ có giống nhau hay không.
Và chúng ta viết chương trình so sánh 2 mảng trong C++ bằng hàm memcmp như sau:
|
Kết quả phép so sánh mảng trong C++:
1 |
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn cách so sánh mảng trong C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo.
URL Link
https://laptrinhcanban.com/cpp/lap-trinh-cpp-co-ban/mang-trong-cpp/so-sanh-mang-trong-cpp/
HOME › lập trình c++ cơ bản dành cho người mới học lập trình>>17. mảng trong c++