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