Làm việc với danh sách với vector trong lập trình c++ Trong bài viết này, Stanford - Dạy lập trình sẽ giúp các bạn học lập trình c++ làm việc với mảng động hay danh sách sử dụng vector qua những ví dụ cụ thể. Trong quá trình học lập trình c++ cũng như làm việc thực tế thường xuyên bạn có nhu cầu sử dụng một mảng động hay danh sách có số lượng phần tử thay đổi, kích thước không cố định. Để làm việc đó trong lập trình c++ chúng ta sử dụng thư viện vector được cung cấp trong c++. Vector: Là một kiểu mảng động trong lập trình c++. Số lượng phần tử có thể thay đổi tùy theo mục đích sử dụng của người dùng Đặc điểm chính của vector Kích thước động: Các vector tự động thay đổi kích thước khi bạn thêm hoặc xóa các phần tử. Tính linh hoạt này là một trong những lý do chính khiến vector được ưa chuộng hơn mảng cố định trong nhiều tình huống. Truy cập hiệu quả: Vì các phần tử vector được lưu trữ ở các vị trí bộ nhớ liền kề nên bạn có thể truy cập các phần tử theo thời gian không đổi bằng cách sử dụng chỉ mục của chúng, tương tự như mảng. Chèn và xóa: Việc chèn các phần tử thường được thực hiện ở cuối vector. Còn việc chèn hoặc xóa các phần tử ở đầu hoặc giữa vectơ mất thời gian tuyến tính do cần phải dịch chuyển các phần tử. Cú pháp khai báo Vector trong C++ std::vector <Kiểu dữ liệu> Tên vector; trong đó kiểu dữ liệu là kiểu dữ liệu của từng phần tử của vector. Bạn có thể xóa std:: nếu bạn đã sử dụng không gian tên std. Khởi tạo Vector trong C++ Chúng ta có thể khởi tạo một vectơ theo những cách sau: 1. Khởi tạo sử dụng List Khởi tạo này được thực hiện bằng một khai báo. Ở đây, chúng ta truyền danh sách các phần tử cho hàm tạo vector để tạo một vector với các phần tử được chỉ định. vector <dataType> tên({ giá trị 1, giá trị 2, giá trị 3 .... }); Ví dụ: vector<int> vec{3, 5}; 2. Khởi tạo với một giá trị duy nhất Việc khởi tạo này cũng được thực hiện bằng khai báo. Ở đây, chúng ta chỉ định kích thước của vector và sau đó khởi tạo mọi phần tử của vector bằng giá trị. vector <dataType> tên(kích thước, giá trị); Ví dụ: Khai báo danh sách 3 phần tử với giá trị mỗi phần tử là 1 vector<int> vec4(3, 1); 3. Khởi tạo từ một vector khác Khởi tạo này được sử dụng để tạo một vector là bản sao chính xác của một vector khác vector <dataType> tên(other_vec); Ví dụ: vector<int> vec1 = { 1, 2, 5, 6, 8 }; vector<int> vec2(vec1); Các hàm hay sử dụng trong vector Sau đây là mô tả và cách thức sử dụng các hàm hay dùng trong vector như sau: push_back(value): Để thêm một giá trị vào 1 vector size(): Trả về số lượng các phần tử trong vector empty(): Trả về true nếu danh sách rỗng front(): Hàm trả về giá trị đầu tiên trong danh sách back(): Hàm trả về giá trị cuối cùng trong danh sách at(pos): Hàm trả về giá trị của phần tử theo vị trí trong danh sách data(): Hàm trả về dữ liệu danh sách về dạng con trỏ begin(): Hàm trỏ về vị trí đầu tiên của danh sách end(): Hàm trỏ về vị trí cuối của danh sách rbegin(): Hàm trả về con trỏ về vị trí cuối trong danh sách rend(): Hàm trả về con trỏ vị trí đầu trong danh sách cbegin(): Hàm trả về hằng số con trỏ vị trí đầu trong danh sách cend(): Hàm trả về hằng số con trỏ vị trí đầu trong danh sách assign(n, m): Tạo danh sách gồm n phần tử với giá trị m trong vector pop_back(): Xóa phần tử cuối trong danh sách insert(): Chèn 1 giá trị vào vị trí con trỏ nào đó trong danh sách erase(): Xóa phần tử trong danh sách swap(): Hàm thực hiện hoán đổi 2 danh sách vector cùng kiểu clear(): Xóa các phần tử trong danh sách emplace(): Thêm phần tử vào vị trí nào đó trong danh sách emplace_back(): Thêm phần tử vào cuối danh sách Ví dụ 1: Sử dụng các hàm trong Vector //Khai báo 1 vector vector<int> vec; //Thêm giá trị vec.push_back(3); vec.push_back(5); vec.push_back(7); cout << "So luong phan tu: " << vec.size() << endl; cout << "Phan tu dau: " << vec.front() << endl; cout << "Phan tu cuoi: " << vec.back() << endl; cout << "Phan tu o vi tri thu 2 la: " << vec.at(1) << endl; //Di chuyển trỏ về vị trí đầu rồi thêm số 8 vec.insert(vec.begin(), 8); //Tạo danh sách 4 phần tử với các giá trị 5 vec.assign(4, 5); //Xóa phần tử cuối vec.pop_back(); //Chèn vào vị trí con trỏ đầu của vector giá trị 6 vec.emplace(vec.begin(), 6); //Chèn vào phần tử cuối danh sách vec.emplace_back(10); //Xóa phần tử ở vị trí đầu vec.erase(vec.begin()); cout << "Cac phan tu: " << endl; for (auto i = vec.begin(); i != vec.end(); ++i) { cout << *i << endl; } Ví dụ 2: Sử dụng các hàm trong Vector //Xóa tất cả các phần tử vec.clear(); vector<int> vec4 = { 1, 2 }; vector<int> vec5 = { 3, 4 }; //Hoán đổi vec4.swap(vec5); cout << "Danh sach cac phan tu trong vec 4: " << endl; for (const int& i : vec4) { cout << i << endl; } cout << "Danh sach cac phan tu trong vec 5: " << endl; for (const int& i : vec5) { cout << i << endl; } Để thực hành các bạn học lập trình c++ có thể viết code xử lý như từng ví dụ trong bài viết hướng dẫn. Hy vọng qua bài viết này đã giúp các bạn học lập trình c++ hiểu rõ hơn về mảng động sử dụng vector, cách thức khai báo và sử dụng các hàm trong vector một cách hiệu quả. Bên cạnh đó nếu bạn đang muốn được đào tạo bài bản từ cơ bản đến nâng cao về lập trình c++ có thể tham gia ngay khóa học lập trình c++ cùng chuyên gia giàu kinh nghiệm Stanford tại đây: http://bit.ly/2SLPYFF và nhận ưu đãi hấp dẫn của Stanford trong thời gian này. Bạn có thể gọi theo hotline: 0963 723 236 - 0866 586 366 để được gọi lại tư vấn trực tiếp nhé. ============================= ☎ STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ Hotline: 0963 723 236 - 0866 586 366 Website: https://stanford.com.vn Facebook: http://bit.ly/2FN0TYb Youtube: http://bit.ly/2TkKT7I Tags: sử dụng vector, mảng động c++, học lập trình c++