01/10/2018, 11:48

Thắc mắc về cách duyệt vòng lặp for

 #include<iostream>
 int main()
 {
	int arr[5] = { 1, 2, 3, 4, 5 };
 	for (int x : arr)
 	{
 		std::cout << x << std::endl;
 	}
 	system("pause");
 	return 0;
  }

Mình đã thử dụng vòng lặp for như trên để duyệt mảng và cho kết quả đúng (kể cả đối với vector và chuỗi cũng cho kết quả đúng), mình thấy cách này nhanh gọn nhưng sao cách này lại thấy ít người dùng, các bạn có thể giải thích hộ mình. Mình xin cảm ơn.

Trần Hoàn viết 13:56 ngày 01/10/2018

Vì nó không còn là cơ bản nữa rồi. Đối với người dạy thì hạn chế việc dùng các ký hiệu tắt
Cái của bạn thực ra nó như thế này:

for each (int x in arr)
	std::cout << x << std::endl;

Bây giờ nó còn dễ hiểu. Đến lúc bạn gặp những code kiểu show skill, chương trình 10 dòng viết trong 3 dòng toàn ? vói :, đôi khi còn cả ^ với & thì bạn sẽ muốn đập thằng code 1 trận.

Dark.Hades viết 13:52 ngày 01/10/2018

thấy ít người dùng

Không ít người dùng đâu.

Nếu bạn bắt đầu và xem các project sử dụng modern C++ (>=11) thì họ sẽ chuyển toàn bộ về for each kiểu này khi có thể.
Hàm này tất cả các ngôn ngữ hiện hành phải tới 90% hỗ trợ rồi nên nó cũng không có gì xa lạ và khó hiểu cả.

Giả sử trong 1 hàm get ID của 1 đối tượng nằm trong array, người ta sẽ ưu tiên sử dụng for each hơn là sử dụng for i
Hiện tại hàm này chưa hỗ trợ trực tiếp index cho tới C++17, tuy nhiên trong tương lai (có thể C++20) sẽ được thêm vào.

Pham Van Hai viết 14:00 ngày 01/10/2018

Vì nó mới được đưa vào chuẩn C++11 (2011) nên chưa phổ biến lắm.
Đến hiện tại các hướng dẫn dậy C++ vẫn xen lẵn việc dạy các tính năng của C nữa.

Bài liên quan
0