Thêm chèn vector trong C++ | Laptrinhcanban.com

Thêm chèn vector trong C++

Hướng dẫn cách thêm chèn nối vector trong C++. Bạn sẽ học được cách thêm và chèn 1 phần tử vào vector trong C++ sau bài học này.

Chúng ta có 3 phương pháp để thêm hoặc chèn vector trong C++ như sau:

  • Hàm push_back :
  • Hàm emplace_back :
  • Hàm insert:

Thêm phần tử vào cuối vector C++ bằng hàm push_back

Hàm push_back là một hàm thành viên trong class std:vector, có tác dụng thêm một phần tử vào vị trí cuối cùng trong vector cũng như tăng độ dài của nó thêm một đơn vị, bằng cách copy(hoặc di chuyển) giá trị sang phần tử được đó.

Cú pháp sử dụng hàm push_back để xóa phần tử cuối cùng trong vector như sau:

v.push_back(value);

Trong đó v là tên vector, và value là giá trị sẽ được copy vào phần tử vừa được tạo ra. Nếu phần tử thêm vào có kiểu khác với kiểu của vector thì nó sẽ được chuyển về kiểu của vector trước khi được thêm vào.

Hàm push_back thuộc kiểu void, do đó nó sẽ không trả giá trị. Bởi vậy nó sẽ thêm phần tử vào vị trí cuối cùng trong vector chứ không trả về chuỗi kết quả.

Ví dụ cụ thể:

#include <iostream>
#include <vector>
using namespace std;

//Tạo hàm xuất vector
void dump(vector<int>& v)
{
for (auto x: v) {
cout << " "<< x ;
}
cout << endl;
}

int main() {
vector<int> v{3, 1, 4, 1, 5, 7, 9};
dump(v);

v.push_back(88);

dump(v);

return 0;
}

Và kết quả:

3 1 4 1 5 7 9
3 1 4 1 5 7 9 88

Có thể thấy phần tử 88 đã được thêm vào vị trí cuối cùng trong chuỗi ban đầu.

Lưu ý, nếu phần tử thêm vào có kiểu khác với kiểu của vector thì nó sẽ được chuyển về kiểu của vector trước khi được thêm vào. Ví dụ nếu thêm một ký tự vào một vector thuộc kiểu int, thì ký tự đó sẽ được chuyển về mã Unicode trước khi được thêm vào vector ban đầu như sau:

vector<int> v{3, 1, 4, 1, 5, 7, 9};
dump(v);
// 3 1 4 1 5 7 9

v.push_back('a');
dump(v);
// 3 1 4 1 5 7 9 97

Do mã Unicode của ký tự ‘a’ là 97 nên nó đã được chuyển về dạng int là 97, rồi mới được thêm vào vector ban đầu như trên.

Thêm phần tử vào cuối vector C++ bằng hàm emplace_back

Tương tự như hàm push_back() thì chúng ta cũng có thể sử dụng hàm emplace_back() khi muốn thêm một phần tử vào cuối một vector ban đầu.

Hàm emplace_back là một hàm thành viên trong class std:vector, có tác dụng thêm một phần tử vào vị trí cuối cùng trong vector cũng như tăng độ dài của nó thêm một đơn vị, bằng cách sử dụng hàm tạo của kiểu của giá trị được thêm.

Cú pháp sử dụng hàm emplace_back để thêm phần tử vào cuối vector C++ như sau:

v.emplace_back(args);

Trong đó v là tên vector, và args là các thông tin được sử dụng trong hàm tạo value_type tương ứng với kiểu giá trị để tạo nên phần tử trong vector.

Ví dụ cụ thể:

#include <iostream>
#include <vector>
using namespace std;

//Tạo hàm xuất vector
void dump(vector<int>& v)
{
for (auto x: v) {
cout << " "<< x ;
}
cout << endl;
}

int main() {
vector<int> v{3, 1, 4, 1, 5, 7, 9};
dump(v);

v.emplace_back(88);

dump(v);

return 0;
}

Và kết quả:

3 1 4 1 5 7 9
3 1 4 1 5 7 9 88

Hàm emplace_back khác với hàm push_back ở chỗ, nó không nhận trực tiếp giá trị và copy giá trị này vào phần tử được thêm, mà nó sẽ dùng giá trị này như là đối số trong hàm tạo nên phần tử.

Ví dụ, nếu chúng ta thêm phần tử vào vector bằng hàm push_back:

vector<int> v{3, 1, 4, 1, 5, 7, 9};

v.push_back(88);

Điều đó có nghĩa là giá trị 88 sẽ được sử dụng trực tiếp để copy vào một phần tử mới được tạo ở cuối vector.

Còn nếu chúng ta thêm phần tử vào vector bằng hàm emplace_back:

vector<int> v{3, 1, 4, 1, 5, 7, 9};

v.emplace_back(88);

Điều đó có nghĩa là giá trị 88 được sử dụng như đối số trong hàm tạo thuộc class std:In tương ứng với kiểu int của giá trị 88. Hàm tạo này sẽ tạo ra phần tử mới được tạo ở cuối vector.

Do hàm emplace_back sẽ tạo trực tiếp phần tử bên trong vector mà không cần phải qua việc copy (di chuyển) giá trị vào trong vector, nên nó được cho là có tốc độ xử lý nhanh hơn hàm push_back.

Chèn 1 phần tử vào vị trí chỉ định trong vector C++ bằng hàm insert

Để chèn phần tử vào vị trí chỉ định trong vector C++, chúng ta sử dụng hàm insert với cú pháp sau đây:

v.insert(p, value);

Trong đó v là vector ban đầu, value là phần tử cần chèn, và p là trình lặp trỏ đến vị trí cần chèn trong vector.

Ở đây trình lặp (iterator) là một vòng lặp có tác dụng giống như con trỏ, giúp truy cập đến các phần tử ở vị trí cụ thể trong vector.

Trong trường hợp cần chỉ đến vị trí index thứ n trong vector, chúng ta sẽ viết trình lặp p như sau:

v.begin() + i

Trong đó v.begin() chỉ đến vị trí đầu tiên trong vector, và i là index của vị trí phần tử cần chỉ đến.

Kết hợp lại thì công thức để chèn 1 phần tử vào vị trí chỉ định trong vector C++ bằng hàm insert sẽ như sau:

v.insert(v.begin() + i, value);

Ví dụ cụ thể:

#include <iostream>
#include <vector>
using namespace std;

//Tạo hàm xuất vector
void dump(vector<int>& v)
{
for (auto x: v) {
cout << " "<< x ;
}
cout << endl;
}

int main ()
{
vector<int> v{3, 1, 4, 1, 5, 7, 9};
v.insert(v.begin()+2, 55); //Thêm phần tử 55 vào vị trí thứ 2
dump(v);

v.insert(v.begin()+4, 22); //Thêm phần tử 22 vào vị trí thứ 4
dump(v);
return 0;
}

Kết quả:

3 1 55 4 1 5 7 9
3 1 55 4 22 1 5 7 9

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách thêm chèn vector trong C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo.

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.