Vectơ trong Thư viện mẫu chuẩn C ++ (STL) với ví dụ

Mục lục:

Anonim

Vector C ++ là gì?

Một C ++ VECTOR là một mảng động có khả năng thay đổi kích thước tự động. Việc thay đổi kích thước xảy ra sau khi một phần tử đã được thêm hoặc xóa khỏi vectơ. Việc lưu trữ được xử lý tự động bởi vùng chứa. Các phần tử của vectơ được lưu trữ trong bộ nhớ liền kề. Điều này cho phép các lập trình viên C ++ truy cập và duyệt qua các phần tử vectơ bằng cách sử dụng trình vòng lặp.

Việc chèn dữ liệu mới vào một vectơ được thực hiện ở phần cuối của nó. Điều này cần một khoảng thời gian khác biệt. Việc loại bỏ một phần tử khỏi một vectơ cần thời gian không đổi. Lý do là không cần thay đổi kích thước vector. Việc chèn hoặc xóa một phần tử ở đầu vectơ mất thời gian tuyến tính.

Trong Hướng dẫn C ++ này, bạn sẽ học:

  • Vector C ++ là gì?
  • Khi nào thì sử dụng vectơ?
  • Cách khởi tạo vectơ trong C ++
  • Trình lặp lại
  • Bổ ngữ
  • ví dụ 1
  • Ví dụ 2
  • Sức chứa
  • Ví dụ 3

Khi nào thì sử dụng vectơ?

Một vectơ C ++ nên được sử dụng trong các trường hợp sau:

  • Khi xử lý các yếu tố dữ liệu thay đổi nhất quán.
  • Nếu kích thước của dữ liệu không được biết trước khi bắt đầu, thì vectơ sẽ không yêu cầu bạn đặt kích thước tối đa của vùng chứa.

Cách khởi tạo vectơ trong C ++

Cú pháp của vectơ trong C ++ là:

vector  name (items)
  • Như hình trên, chúng ta bắt đầu với từ khóa vector.
  • Kiểu dữ liệu là kiểu dữ liệu của các phần tử sẽ được lưu trữ trong vectơ.
  • Tên là tên của vectơ hoặc các phần tử dữ liệu.
  • Các mục biểu thị số phần tử cho dữ liệu của vectơ. Tham số này là tùy chọn.

Trình lặp lại

Mục đích của trình vòng lặp là giúp chúng ta truy cập các phần tử được lưu trữ trong một vectơ. Đó là một đối tượng hoạt động giống như một con trỏ. Dưới đây là các trình vòng lặp phổ biến được hỗ trợ bởi vectơ C ++:

  • vector :: begin (): nó đưa ra một trình vòng lặp trỏ đến phần tử đầu tiên của vector.
  • vector :: end (): nó đưa ra một trình vòng lặp trỏ đến phần tử quá khứ-cuối của vector.
  • vector :: cbegin (): nó giống như vector :: begin (), nhưng nó không có khả năng sửa đổi các phần tử.
  • vector :: cend (): nó giống như vector :: end () nhưng không thể sửa đổi các phần tử vector.

Bổ ngữ

Các sửa đổi được sử dụng để thay đổi ý nghĩa của kiểu dữ liệu được chỉ định. Dưới đây là các công cụ sửa đổi phổ biến trong C ++:

  • vector :: push_back (): Công cụ sửa đổi này đẩy các phần tử từ phía sau.
  • vector :: insert (): Để chèn các mục mới vào một vector tại một vị trí được chỉ định.
  • vector :: pop_back (): Công cụ sửa đổi này loại bỏ các phần tử vectơ ở phía sau.
  • vector :: delete (): Nó được sử dụng để xóa một loạt các phần tử khỏi vị trí được chỉ định.
  • vector :: clear (): Nó loại bỏ tất cả các phần tử vector.

ví dụ 1

#include #include using namespace std;int main(){vector nums;for (int a = 1; a <= 5; a++)nums.push_back(a);cout << "Output from begin and end: ";for (auto a = nums.begin(); a != nums.end(); ++a)cout << *a << " ";cout << "\nOutput from cbegin and cend: ";for (auto a = nums.cbegin(); a != nums.cend(); ++a)cout << *a << " ";return 0;}

Đầu ra:

Đây là ảnh chụp màn hình của mã:

Giải thích mã:

  1. Bao gồm tệp tiêu đề iostream trong mã của chúng tôi. Nó sẽ cho phép chúng tôi đọc và ghi vào bảng điều khiển.
  2. Bao gồm tệp tiêu đề vectơ trong mã của chúng tôi. Nó sẽ cho phép chúng ta làm việc với các vectơ trong C ++.
  3. Bao gồm không gian tên std để sử dụng các lớp và chức năng của nó mà không cần gọi nó.
  4. Gọi hàm main () mà bên trong sẽ thêm logic của chương trình.
  5. Dấu {đánh dấu phần bắt đầu của phần nội dung của hàm main ().
  6. Khai báo một vectơ có tên là nums để lưu trữ một tập hợp các số nguyên.
  7. Tạo một vòng lặp for để giúp chúng ta lặp qua vector. Biến sẽ giúp chúng ta lặp qua các phần tử vectơ, từ phần tử thứ 1 đến thứ 5 .
  8. Đẩy các phần tử vào trong vector num từ phía sau. Đối với mỗi lần lặp, điều này sẽ thêm giá trị hiện tại của biến a vào vectơ, giá trị này là 1 đến 5.
  9. In một số văn bản trên bảng điều khiển
  10. Sử dụng một biến lặp a để lặp qua các phần tử của vector nums từ đầu đến phần tử quá khứ-cuối. Lưu ý rằng chúng ta đang sử dụng các trình vòng lặp vector :: begin () và vector :: end ().
  11. In các giá trị được trỏ tới bởi biến vòng lặp an trên bảng điều khiển cho mỗi lần lặp.
  12. In một số văn bản trên bảng điều khiển. \ N là một ký tự dòng mới, di chuyển con trỏ đến dòng mới để in từ đó.
  13. Sử dụng một biến lặp để lặp qua các phần tử của vector nums từ đầu đến phần tử quá khứ-cuối. Lưu ý rằng chúng tôi đang sử dụng các trình vòng lặp vector :: cbegin () và vector :: cend ().
  14. In các giá trị được trỏ tới bởi biến trình lặp a trên bảng điều khiển cho mỗi lần lặp.
  15. Hàm main sẽ trả về một giá trị nếu chương trình chạy thành công.
  16. Cuối phần thân của hàm main ().

Ví dụ 2

#include #include using namespace std;int main(){vector nums;nums.assign(5, 1);cout << "Vector contents: ";for (int a = 0; a < nums.size(); a++)cout << nums[a] << " ";nums.push_back(2);int n = nums.size();cout << "\nLast element: " << nums[n - 1];nums.pop_back();cout << "\nVector contents: ";for (int a = 0; a < nums.size(); a++)cout << nums[a] << " ";nums.insert(nums.begin(), 7);cout << "\nFirst element: " << nums[0];nums.clear();cout << "\nSize after clear(): " << nums.size();}

Đầu ra:

Đây là ảnh chụp màn hình của mã:

Giải thích mã:

  1. Bao gồm tệp tiêu đề iostream trong mã của chúng tôi để sử dụng các chức năng của nó.
  2. Bao gồm tệp tiêu đề vectơ trong mã của chúng tôi để sử dụng các chức năng của nó.
  3. Bao gồm không gian tên std để sử dụng các lớp của nó mà không cần gọi nó.
  4. Gọi hàm main (). Logic của chương trình nên được thêm vào bên trong phần thân của nó.
  5. Phần bắt đầu của phần thân của hàm main ().
  6. Khai báo một vectơ có tên là nums để lưu trữ một số giá trị số nguyên.
  7. Lưu trữ 5 phần tử trong số vector. Mỗi giá trị là 1.
  8. In một số văn bản trên bảng điều khiển
  9. Sử dụng một biến lặp a để lặp qua các phần tử của vectơ nums.
  10. In các giá trị của số vector trên bảng điều khiển cho mỗi lần lặp.
  11. Thêm giá trị 2 vào cuối vector nums.
  12. Khai báo một biến số nguyên n để lưu trữ kích thước của các vector num.
  13. In giá trị cuối cùng của số vector cùng với văn bản khác. Nó sẽ trả về một 2.
  14. Loại bỏ phần tử cuối cùng khỏi nums vector. 2 sẽ bị xóa.
  15. In văn bản trên bảng điều khiển. \ N di chuyển con trỏ đến dòng mới để in văn bản ở đó.
  16. Sử dụng một biến lặp a để lặp qua các phần tử của vectơ nums.
  17. In các giá trị của số vector trên bảng điều khiển cho mỗi lần lặp.
  18. Chèn giá trị 7 vào đầu vectơ nums.
  19. In giá trị đầu tiên của số vector cùng với văn bản khác. Nó sẽ trả về 7.
  20. Xóa tất cả các phần tử khỏi nums vectơ.
  21. In kích thước của số vector cùng với văn bản khác sau khi xóa tất cả nội dung. Nó sẽ trả về 0.
  22. Cuối phần thân của hàm main ().

Sức chứa

Sử dụng các hàm sau để xác định công suất của vectơ:

  • Size () - Nó trả về số lượng các mục trong một vectơ.
  • Max_size () -Nó trả về số lượng mục cao nhất mà một vectơ có thể lưu trữ.
  • Dung lượng () -Nó trả về lượng không gian lưu trữ được cấp cho một vectơ.
  • Resize () -Nó thay đổi kích thước vùng chứa để chứa n mục. Nếu kích thước hiện tại của vectơ lớn hơn n, các mục phía sau sẽ bị xóa khỏi vectơ. Nếu kích thước hiện tại của vectơ nhỏ hơn n, các mục bổ sung sẽ được thêm vào mặt sau của vectơ.
  • Empty () -i t trả về true nếu một vector rỗng, ngược lại, nó trả về false.

Ví dụ 3

#include #include using namespace std;int main() {vector vector1;for (int x = 1; x <= 10; x++)vector1.push_back(x);cout << "Vector size: " << vector1.size()<< endl;cout << "Vector capacity: " << vector1.capacity() << endl;cout << "Maximum size of vector: " << vector1.max_size()<< endl;vector1.resize(5);cout << "Vector size after resizing: " << vector1.size() << endl;if (vector1.empty() == false)cout << "Vector is not empty"<

Đầu ra:

Đây là ảnh chụp màn hình của mã:

Giải thích mã:

  1. Bao gồm tệp tiêu đề iostream trong mã của chúng tôi để sử dụng chức năng của nó.
  2. Bao gồm tệp tiêu đề vectơ trong mã của chúng tôi để sử dụng các chức năng của nó.
  3. Bao gồm không gian tên std trong mã của chúng tôi để sử dụng các lớp của nó mà không cần gọi nó.
  4. Gọi hàm main (). Logic chương trình nên được thêm vào trong phần thân của hàm này.
  5. Tạo một vector có tên vector1 để lưu trữ các số nguyên.
  6. Sử dụng vòng lặp for để tạo biến x có giá trị từ 1 đến 10.
  7. Đẩy các giá trị của biến x vào vector.
  8. In kích thước của vectơ cùng với văn bản khác trên bảng điều khiển.
  9. In dung lượng của vectơ cùng với văn bản khác trên bảng điều khiển.
  10. In số lượng mục tối đa mà vectơ có thể chứa cùng với văn bản khác trên bảng điều khiển.
  11. Thay đổi kích thước vectơ để chỉ chứa 5 phần tử.
  12. In kích thước mới của vectơ cùng với văn bản khác.
  13. Kiểm tra xem vectơ có trống không.
  14. In văn bản trên bảng điều khiển nếu vectơ không trống.
  15. Sử dụng một câu lệnh else để nêu những gì cần làm nếu vectơ trống.
  16. Văn bản để in trên bảng điều khiển nếu vectơ trống.
  17. Chương trình phải trả về giá trị khi hoàn thành thành công.
  18. Kết thúc phần thân của hàm main ().

Tóm lược:

  • Vectơ C ++ là một mảng động có khả năng tự động thay đổi kích thước khi một phần tử được thêm vào hoặc xóa khỏi nó.
  • Việc lưu trữ một vectơ được vùng chứa xử lý tự động.
  • Các phần tử của một vectơ được lưu trữ trong bộ nhớ liền kề để có thể được truy cập sau đó được duyệt qua bằng cách sử dụng trình vòng lặp.
  • Việc chèn dữ liệu mới vào một vectơ được thực hiện ở phần cuối của nó.
  • Việc chèn dữ liệu vào một vectơ mất một khoảng thời gian khác nhau.
  • Việc loại bỏ một phần tử khỏi một vectơ cần thời gian không đổi.
  • Việc chèn hoặc xóa một phần tử ở đầu mất thời gian tuyến tính.
  • Vectơ nên được sử dụng khi xử lý các phần tử dữ liệu thay đổi nhất quán.
  • Ngoài ra, bạn có thể sử dụng vectơ nếu không biết kích thước của dữ liệu trước khi bắt đầu.