Bài 1: Vector - Khái niệm - Sử dụng thư viện chuẩn STL cho C/C++

Đăng bởi: Admin | Lượt xem: 6489 | Chuyên mục: C/C++


Chúng ta đã biết trong lập trình C, chúng ta thường sử dụng mảng(array) được biết như là một mảng tĩnh.
Lợi ích của mảng tĩnh là việc truy xuất dễ dàng đến các phần tử trong mảng để thay đổi và chỉnh sửa các giá trị, nhưng không thể nói đến những khó khăn khi làm việc với mảng tĩnh như :
- Phải khai báo độ dài của mảng bằng giá trị cụ thể
- Muốn chèn, xoá, thay đổi độ dài của mảng khá phức tạp và tốn bộ nhớ
Vì thế hôm nay chúng ta sẽ tìm hiểu về vector nhé .

Vector là gì ?

Giống như là mảng (array), vector trong C++ là một đối tượng dùng để chứa các đối tượng khác, và các đối tượng được chứa này cũng được lưu trữ một cách liên tiếp trong vector
So với mảng, cách dùng của vector thì linh hoạt hơn nhiều, và đây là 1 số điểm nổi trội của vector so với mảng array :
  • Bạn không cần phải khai báo kích thước của mảng ví dụ int A[100]..., vector có thể tự động nâng kíck thước lên.
  • Nếu bạn thêm 1 phần tử vào vector đã đầy rồi, thì vector sẽ tự động tăng kíck thước của nó lên để dành chỗ cho giá trị mới này.- Vector còn có thể cho bạn biết số lượng các phần tử mà bạn đang lưu trong nó.
  • Dùng số phần tử âm vẫn được trong vector ví dụ A-10], A[-3], rất tiện trong việc cài đặt các giải thuật khác.
Dưới đây là ví dụ về Vector là cú pháp thêm phần tử vào vector : 
#include <iostream>
#include <vector>
using namespace std;
int main(){
    vector<int> list;
    list.push_back(1);
    list.push_back(2);
    list.push_back(3);
    list.push_back(4);
    list.push_back(5);

    for(int i = 0 ; i < list.size(); i++){
        cout << list[i]<<endl;
    }
    return 0;
}
Ở dòng thứ 2 chúng ta sử dụng thư việc vector để hỗ trợ trong việc thêm các phần tử vào list bằng câu lệnh list.push_back(value);

Các ví dụ : 

chúng ta cùng làm qua một số ví dụ nhé :
1. Tính tổng các phần tử trong list  :
Chúng ta có một list gồm 5 phần tử [1,2,3,4,5] và tính tổng bằng cách sử dụng con trỏ để duyệt qua các phần tử trong list và tính tổng , code như sau :
#include <iostream>
#include <vector>
using namespace std;
int main(){
    vector<int> list;
    list.push_back(1);
    list.push_back(2);
    list.push_back(3);
    list.push_back(4);
    list.push_back(5);
    int sum = 0;
    for(vector<int>::iterator it = list.begin(); it != list.end(); ++it){
        sum += *it;
    }
    cout << "Tong la : " << sum;
    return 0;
}
Ở trên, vector<int>::iterator it có nghĩa là chúng ta đã khai báo một con trỏ trong vector và sử dụng con trỏ này để qua mỗi vòng lặp chúng ta lại cộng vào biến sum
sum += *it : *it để lấy giá trị của biến con trỏ 

2. Nhập vào mảng gồm n kí tự và sắp xếp mảng theo thứ tự tăng dần :

#include <iostream>

#include <vector>
using namespace std;
int main(){
    int n;
    cout << "Nhap do dai cua mang : ";
    cin >> n;
    vector<int> list;
    int index;

    //Nhập mảng
    for(int i = 0; i < n; i++){
        cin >> index;
        list.push_back(index);
    }



    //Sắp xếp các phần tử của mảng
    int idx = 0;
    for(int i = 0; i < list.size()-1; i++){
        idx = i;
        for(int j = i + 1; j < list.size(); j++){
            if(list[idx] > list[j]){
                //Hoan vi tang dan
                int hoanvi = list[idx];
                list[idx] = list[j];
                list[j] = hoanvi;
            }
        }
    }

    // Xuất mảng bằng cách sử dụng biến con trỏ
    for(vector<int>::iterator it = list.begin(); it != list.end(); ++it){
        cout << *it << endl;
    }
    return 0;
}
Bài sau chúng ta sẽ tìm hiểu về một vài hàm thiết yếu của vector trong C++ 
Bài tiếp theo: Các hàm thường dùng trong Vector >>
vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!