Hướng dẫn sử dụng vector

Chào đêm hôm rất nhiều fan, bây giờ lang thang bên trên mạng phát hiện bài toán thân quen 1 thời của quãng mặt đường sinc viên IT.

Bạn đang xem: Hướng dẫn sử dụng vector

Chắc hẳn hết sức nhiều người trong bọn họ đang chạm chán bài xích tân oán này rộng một lượt nhìn trong suốt quy trình đi học ngơi nghỉ giảng đường đại học.

Đấy chính là câu số 1 trong đề thi dưới đây:

*

Để giải bài toán thù trên có rất nhiều giải pháp, từ sử dụng mảng để thống trị list quý khách, list links, staông chồng, queue...

Hôm ni bọn họ hãy với mọi người trong nhà giải bài bác toán trên bằng vector trong tlỗi viện STL(Standard Template Library) của C++.

Vector là gì?

Vậy hãy cùng coi vector là gì? nó gồm có ưu thế gì nhé?Giống như thể mảng (array), vector trong C++ là một trong những đối tượng người dùng dùng để đựng các đối tượng khác, với những đối tượng người tiêu dùng được đựng này cũng được tàng trữ một bí quyết tiếp tục vào vector.

Tuy nhiên, nếu nhỏng số lượng bộ phận (size) của một mảng là cố định và thắt chặt, thì sống vector, nó hoàn toàn có thể biến đổi trong suốt quy trình thao tác làm việc của chương thơm trình

So cùng với mảng, giải pháp sử dụng của vector thì linc hoạt rộng những, cùng đây là 1 số ít điểm tuyệt đỉnh của vector đối với mảng array :

Bạn không nhất thiết phải knhị báo form size của mảng ví dụ int A<100>..., vector có thể tự động hóa nâng kíck thước lên.Nếu chúng ta thêm 1 phần tử vào vector đang đầy rồi, thì vector vẫn auto tăng kíông chồng thước của nó lên để dành nơi đến quý giá new này.- Vector còn hoàn toàn có thể cho mình biết số lượng các phần tử nhưng bạn đang giữ trong nó.Dùng số bộ phận âm vẫn được vào vector ví dụ A-10>, A<-3>, vô cùng nhân tiện trong Việc thiết lập những giải mã không giống.Cách dùng vector

Để có thể sử dụng vector thì họ đề nghị knhị báo header vector và tlỗi viện std

#include using namespace std;Và nhằm knhị báo một vector ta cần sử dụng cú pháp:

vector A ;

Câu lệnh trên khái niệm 1 vector bao gồm vẻ bên ngoài int. Chú ý hình dạng của vector được để vào 2 dòng ngoặc nhọn.

Xem thêm: Hướng Dẫn Cách Làm Hoa Khô Không Mất Màu Đẹp Ấn Tượng Ngày 20/10

Vì kíông xã thước của vector rất có thể thổi lên, vì thế ko yêu cầu khai báo mang lại nó bao gồm bao nhiêu thành phần cũng khá được, hoặc giả dụ đam mê knhị báo thì chúng ta cũng có thể khai báo một trong những giải pháp như sau :

vector A(10);vector A(10, 2);

Đồng thời ta cũng hoàn toàn có thể khởi chế tạo ra cho 1 vector bởi cực hiếm của một vector khác, ví dụ :

vectorint> A(10,2); vectorint> B(A); Với chiếc lệnh trên thì vector B đã là phiên bản sao của vector A.

Tiếp mang đến họ hãy cùng nhau làm quen về một vài hàm hay sử dụng vào vector nhé

Để thêm một trong những phần tử vào địa điểm sau cuối của vector:

name_of_vector.push_back(name_of_element);

Để loại bỏ đi bộ phận cuối cùng của vector:

name_of_vector.pop_back();

Để vứt đi tất cả những phần tử của vector:

name_of_vector.clear();

Để mang ra phần tử đầu tiên của vector:

name_of_vector.front();

Để lôi ra phần tử sau cùng của vector:

name_of_vector.back();

Để lôi ra phần tử địa điểm sản phẩm n của vector (đếm trường đoản cú 0):

name_of_vector.at(n);

Để biết con số phần tử của vector:

name_of_vector.size();

Để biết vector tất cả phần tử tốt không:

name_of_vector.empty();

Để thông qua vector bởi iterator:

vectorinteger>::iterator iter_name; // Knhì báo con trỏ để duyệtfor (iter_name = name_of_vector.begin(); iter_name != name_of_vector.end(); iter_name++) cout *iter_name endl;Crúc ý, sau khi chúng ta cần sử dụng áp dụng toán tử ++ vào biến hóa iterator, nó vẫn chỉ cho bộ phận tiếp theo sau của vector. Còn tân oán tử * (value of) cho biết giá trị của phần tử mà con trỏ iterator đã trỏ tới.

Giải quyết bài bác toán thù thiết kế muôn thủa

Quay lại cùng với bàn toán thù đầu đề bài, họ hãy cùng mọi người trong nhà đi giải quyết nó.Knhì báo header vector cùng một số header khác xuất xắc sử dụng của C++

#include#include#include#includeusing namespace std;Knhì báo một data structure đựng thông tin khách hàng:

// Declare structure informationtypedef struct customerchar mName<100>;char mCusType<3>; //Type of customer CN/CT/NNchar mProduct<100>;int mQuantity;double mPrice;TY_Customer;Knhì báo một vector để cất cùng cai quản biết tin quý khách TY_Customer

typedef std::vectorTY_Customer> TY_CustomerList;TY_CustomerList vList;Định nghĩa 4 hàm thiết yếu nhằm tiến hành các chức năng:

Nhập số khách hàng hàngtin tức khách hàngSắp xếp biết tin khách hàng hàngIn ra danh sách khách hàng hàng

// Main functionsint input_number_of_customers(void);void input_customers_infor(TY_CustomerList* vList, int n);void display_list(TY_CustomerList* vList);void sort_customer_list(TY_CustomerList* vList);Chúng ta cũng quan niệm một trong những hàm hỗ trợ cho các hàm chủ yếu sinh sống trên nlỗi sau:

// Other supporting functionsvoid print_menu(void); // Print selection menudouble get_discount(char* mCusType); //Get discount informationdouble calculate_money(TY_Customer *tmp); //Calculate total amount of money of each customervoid print_a_customer_info(TY_Customer *tmp); //Display information of a customerbool compare(TY_Customer tmp1, TY_Customer tmp2); // Used for vector sortvoid check_valid_input(void); // Chechồng input data is valid or notNhỏng bao bài xích tân oán bước đầu không giống, chúng ta sẽ cần sử dụng standard input/output function để nhtràn vào những thông tin từ bàn phím.

Bắt đầu cùng với hàm nhập số khách hàng, vì số khách hàng là một số trong những luôn luôn dương bắt buộc chúng ta yêu cầu kiểm tra thêm ĐK đầu vào:

int input_number_of_customers(void) n ::max(), " "); //skip bad đầu vào cin >> n;return n;}Tiếp mang đến là hàm nhập công bố quý khách, các lên tiếng sẽ tiến hành gửi vào vươn lên là lâm thời tmp và gửi vào vector trải qua hàm push_back nlỗi sau.

Chúng ta cũng cần check các dữ liệu dạng số numeric.

Xem thêm: Cà Phê Nâu Lắc Là Gì? 5+ Cách Pha Cafe Nâu Lắc Ngon Và Độc Đáo

void input_customers_infor(TY_CustomerList* vList, int n) //Input information of customerschar select;if (!vList->empty()) TY_Customer tmp;for (int i = 0; i > tmp.mName;cout > tmp.mCusType;//customer type must be công nhân, CT or NN while ((strcmp(tmp.mCusType, "CN") != 0) && strcmp(tmp.mCusType, "CT") != 0 && strcmp(tmp.mCusType, "NN") != 0);cout > tmp.mProduct;cout > tmp.mQuantity;while(!cin) // user didn"t input đầu vào a number cin.clear(); // remix failed bit cin.ignore(std::numeric_limits::max(), " "); //skip bad đầu vào cin >> tmp.mQuantity;cout > tmp.mPrice;while(!cin) // user didn"t input a number cin.clear(); // reset failed bit cin.ignore(std::numeric_limits::max(), " "); //skip bad input đầu vào cin >> tmp.mPrice;cout ::max(), " "); //skip bad input}vList->push_back(tmp);}return;}Có rất nhiều phương pháp để duyệt những phần tử của một vector, ở đây bọn họ sử dụng bí quyết dễ dàng và đơn giản độc nhất vô nhị là auto hoặc iterator

void display_list(TY_CustomerList* vList) {if(vList->empty()) {cout Sau đấy là hàm thu xếp những thành phần của vector, chúng ta chỉ bài toán cần sử dụng sort của thỏng viện std

void sort_customer_list(TY_CustomerList* vList) {if(vList->empty()) cout begin(), vList->end(), compare);Trong số đó compare là nhỏ trỏ hàm chỉ đến hàm nguyên tắc máy trường đoản cú sort vày ta tự định nghĩa:

bool compare(TY_Customer tmp1, TY_Customer tmp2) return (tmp1.mPrice > tmp2.mPrice);Các bạn cũng có thể xem full giải mã của bài toán thù này sinh sống ĐÂY/HERE

do đó với vấn đề sử dụng vector thì ta có thể dễ dàng giải quyết và xử lý bài tân oán "muôn thủa" ngơi nghỉ trên.Nhanh hơn rất nhiều so với áp dụng mảng, hoặc những nhiều loại danh sách liên kết không giống.

Nếu các bạn có những phương pháp giải không giống nhanh hao gọn gàng hơn vậy thì hãy cùng cả nhà share nhé.Chào thân ái và quyết thắng. ENJOY CODING!


Chuyên mục: Kiến thức