Bài giảng Kỹ thuật lập trình: Bài 13 do TS. Đào Trung Kiên biên soạn trình bày các nội dung sau: Các phiên bản C++, critical sections và quản lý sử dụng tài nguyên, khái niệm hàm lambda, tham chiếu rvalue và ý nghĩa move, các constructor copy và move, các toán tử gán copy và move,. | Bài 13: C++11 1 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Các phiên bản C++ C++98 (đã học trong các bài trước): Được ISO chuẩn hoá lần đầu tiên C++03: Một số thay đổi nhỏ C++0x / C++11: Rất nhiều cập nhật mới Nhiều tính năng được lấy lại từ thư viện boost C++14: Một số mở rộng so với C++11 C++17: 2 Đang thảo luận EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Tự suy đoán kiểu Ví dụ: map> m; // map>::iterator itr = (); auto itr = (); // pair& a = m["KTLT"]; auto& a = m["KTLT"]; // pair b; decltype(a) b; 3 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Vòng lặp for theo khoảng (range-based for loop) double a[10]; list l; vector v; for (int x : a) { //. } for (string& x : l) { //. } for (complex& x : v) { //. } 4 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Con trỏ thông minh (smart pointers) Là kiểu trừu tượng cho phép mô phỏng các con trỏ, nhưng bổ sung thêm một số tính năng khác: Quản lý bộ nhớ tự động Kiểm tra phạm vi Ví dụ: shared_ptr p1(new int(10)); shared_ptr p2 = p1; *p2 = 20; // bộ nhớ sẽ được thu hồi khi // tham chiếu cuối cùng được huỷ 5 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà .