I. Arrays Trong C ++
1/ Mảng C++
Mảng được sử dụng để lưu trữ nhiều giá trị trong một biến duy nhất, thay vì khai báo các biến riêng biệt cho từng giá trị.
Để khai báo một mảng, hãy xác định kiểu biến, chỉ định tên của mảng, theo sau là dấu ngoặc vuông và chỉ định số phần tử mà nó sẽ lưu trữ:
string cars[4];
Bây giờ chúng ta đã khai báo một biến chứa một mảng bốn chuỗi. Để chèn các giá trị vào nó, chúng ta có thể sử dụng một ký tự mảng – đặt các giá trị trong danh sách được phân tách bằng dấu phẩy, bên trong dấu ngoặc nhọn:
string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"};
Để tạo một mảng ba số nguyên, bạn có thể viết:
int myNum[3] = {10, 20, 30};
2/ Truy Cập Các Phần Tử Của Một Mảng
Bạn truy cập một phần tử mảng bằng cách tham chiếu đến số chỉ mục bên trong dấu ngoặc vuông [].
Câu lệnh này truy cập giá trị của phần tử đầu tiên trong ô tô:
Example
string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"}; cout << cars[0]; // Outputs Volvo
Lưu ý: Chỉ mục mảng bắt đầu bằng 0: [0] là phần tử đầu tiên. [1] là phần tử thứ hai, v.v.
3/ Thay Đổi Một Phần Tử Mảng
Để thay đổi giá trị của một phần tử cụ thể, hãy tham khảo số chỉ mục:
cars[0] = "Opel";
Example
string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"}; cars[0] = "Opel"; cout << cars[0]; // Now outputs Opel instead of Volvo
II. Arrays and Loops Trong C++
Vòng Qua Một Mảng
Bạn có thể lặp qua các phần tử của mảng bằng vòng lặp for.
Ví dụ sau xuất ra tất cả các phần tử trong mảng ô tô:
Example
string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"}; for (int i = 0; i < 4; i++) { cout << cars[i] << "\n"; }
Ví dụ sau xuất ra chỉ mục của mỗi phần tử cùng với giá trị của nó:
Example
string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"}; for (int i = 0; i < 4; i++) { cout << i << ": " << cars[i] << "\n"; }
III. Omit Array Size Trong C++
1/ Bỏ Qua Kích Thước Mảng
Bạn không phải chỉ định kích thước của mảng. Nhưng nếu bạn không làm như vậy, nó sẽ chỉ lớn bằng các phần tử được chèn vào đó:
string cars[] = {"Volvo", "BMW", "Ford"}; // size of array is always 3
Điều này là hoàn toàn tốt. Tuy nhiên, vấn đề nảy sinh nếu bạn muốn có thêm không gian cho các yếu tố trong tương lai. Sau đó, bạn phải ghi đè các giá trị hiện có:
string cars[] = {"Volvo", "BMW", "Ford"}; string cars[] = {"Volvo", "BMW", "Ford", "Mazda", "Tesla"};
Tuy nhiên, nếu bạn chỉ định kích thước, mảng sẽ dành thêm không gian:
string cars[5] = {"Volvo", "BMW", "Ford"}; // size of array is 5, even though it's only three elements inside it
Giờ đây, bạn có thể thêm phần tử thứ tư và thứ năm mà không cần ghi đè những phần tử khác:
Example
cars[3] = "Mazda"; cars[4] = "Tesla";
2/ Bỏ Qua Các Phần Tử Trên Khai Báo
Cũng có thể khai báo một mảng mà không cần chỉ định các phần tử trên khai báo và thêm chúng sau:
Example
string cars[5]; cars[0] = "Volvo"; cars[1] = "BMW"; ...
IV. Array Size Trong C++
Nhận Kích Thước Của Một Mảng
Để nhận kích thước của một mảng, bạn có thể sử dụng toán tử sizeof ():
Example
int myNumbers[5] = {10, 20, 30, 40, 50}; cout << sizeof(myNumbers);
Result:
20
Tại sao kết quả hiển thị 20 thay vì 5, khi mảng chứa 5 phần tử?
Đó là vì toán tử sizeof () trả về kích thước của một kiểu tính bằng byte.
Bạn đã học được từ chương Kiểu dữ liệu rằng kiểu int thường là 4 byte, vì vậy từ ví dụ trên, 4 x 5 (4 byte x 5 phần tử) = 20 byte.
Để biết một mảng có bao nhiêu phần tử, bạn phải chia kích thước của mảng cho kích thước của kiểu dữ liệu mà nó chứa:
Example
int myNumbers[5] = {10, 20, 30, 40, 50}; int getArrayLength = sizeof(myNumbers) / sizeof(int); cout << getArrayLength;
Result:
5
V. Multi-Dimensional Arrays Trong C++
1/ Mảng Đa Chiều
Mảng nhiều chiều là một mảng của các mảng.
Để khai báo một mảng nhiều chiều, hãy xác định kiểu biến, chỉ định tên của mảng, theo sau là dấu ngoặc vuông cho biết mảng chính có bao nhiêu phần tử, tiếp theo là một tập hợp dấu ngoặc vuông khác cho biết mảng con có bao nhiêu phần tử :
string letters[2][4];
Như với các mảng thông thường, bạn có thể chèn các giá trị bằng một ký tự mảng – một danh sách được phân tách bằng dấu phẩy bên trong dấu ngoặc nhọn. Trong một mảng nhiều chiều, mỗi phần tử trong một ký tự mảng là một ký tự mảng khác.
string letters[2][4] = { { "A", "B", "C", "D" }, { "E", "F", "G", "H" } };
Mỗi tập hợp các dấu ngoặc vuông trong khai báo mảng sẽ thêm một thứ nguyên khác vào một mảng. Một mảng như trên được cho là có hai chiều.
Mảng có thể có bất kỳ số thứ nguyên nào. Mảng càng có nhiều thứ nguyên thì mã càng trở nên phức tạp. Mảng sau có ba thứ nguyên:
string letters[2][2][2] = { { { "A", "B" }, { "C", "D" } }, { { "E", "F" }, { "G", "H" } } };
2/ Truy Cập Các Phần Tử Của Một Mảng Đa Chiều
Để truy cập một phần tử của một mảng đa chiều, chỉ định một số chỉ mục trong mỗi kích thước của mảng.
Câu lệnh này truy cập giá trị của phần tử trong hàng đầu tiên (0) và cột thứ ba (2) của mảng chữ cái.
Example
string letters[2][4] = { { "A", "B", "C", "D" }, { "E", "F", "G", "H" } }; cout << letters[0][2]; // Outputs "C"
Hãy nhớ rằng: Chỉ mục của mảng bắt đầu bằng 0: [0] là phần tử đầu tiên. [1] là phần tử thứ hai, v.v.
3/ Thay Đổi Các Phần Tử Trong Một Mảng Đa Chiều
Để thay đổi giá trị của một phần tử, hãy tham khảo số chỉ mục của phần tử trong mỗi thứ nguyên:
Example
string letters[2][4] = { { "A", "B", "C", "D" }, { "E", "F", "G", "H" } }; letters[0][0] = "Z"; cout << letters[0][0]; // Now outputs "Z" instead of "A"
4/ Vòng Lặp Qua Một Mảng Đa Chiều
Để lặp qua một mảng nhiều chiều, bạn cần một vòng lặp cho mỗi kích thước của mảng.
Ví dụ sau xuất ra tất cả các phần tử trong mảng chữ cái:
Example
string letters[2][4] = { { "A", "B", "C", "D" }, { "E", "F", "G", "H" } }; for(int i = 0; i < 2; i++) { for(int j = 0; j < 4; j++) { cout << letters[i][j] << "\n"; } }
Ví dụ này cho thấy cách lặp qua một mảng ba chiều:
Example
string letters[2][2][2] = { { { "A", "B" }, { "C", "D" } }, { { "E", "F" }, { "G", "H" } } }; for(int i = 0; i < 2; i++) { for(int j = 0; j < 2; j++) { for(int k = 0; k < 2; k++) { cout << letters[i][j][k] << "\n"; } } }
5/ Tại Sao Lại Có Mảng Đa Chiều?
Mảng đa chiều rất tốt trong việc biểu diễn lưới. Ví dụ này cho thấy một cách sử dụng thực tế cho chúng. Trong ví dụ sau, chúng tôi sử dụng một mảng đa chiều để thể hiện một trò chơi Battleship nhỏ:
Example
// We put "1" to indicate there is a ship. bool ships[4][4] = { { 0, 1, 1, 0 }, { 0, 0, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 1, 0 } }; // Keep track of how many hits the player has and how many turns they have played in these variables int hits = 0; int numberOfTurns = 0; // Allow the player to keep going until they have hit all four ships while (hits < 4) { int row, column; cout << "Selecting coordinates\n"; // Ask the player for a row cout << "Choose a row number between 0 and 3: "; cin >> row; // Ask the player for a column cout << "Choose a column number between 0 and 3: "; cin >> column; // Check if a ship exists in those coordinates if (ships[column]) { // If the player hit a ship, remove it by setting the value to zero. ships[column] = 0; // Increase the hit counter hits++; // Tell the player that they have hit a ship and how many ships are left cout << "Hit! " << (4-hits) << " left.\n\n"; } else { // Tell the player that they missed cout << "Miss\n\n"; } // Count how many turns the player has taken numberOfTurns++; } cout << "Victory!\n"; cout << "You won in " << numberOfTurns << " turns";
0 / 5 - (0 Đánh Giá)