Xóa khỏi bộ C++

remove() xóa phần tử đã chỉ định khỏi tập hợp và cập nhật tập hợp. Nó không trả về bất kỳ giá trị nào

Nếu phần tử được chuyển đến remove() không tồn tại, ngoại lệ KeyError sẽ bị ném


ví dụ 1. Xóa một phần tử khỏi tập hợp

# language set
language = {'English', 'French', 'German'}

# removing 'German' from language language.remove('German')

# Updated language set print('Updated language set:', language)

đầu ra

Updated language set: {'English', 'French'}

ví dụ 2. Xóa phần tử không tồn tại

# animal set
animal = {'cat', 'dog', 'rabbit', 'guinea pig'}

# Deleting 'fish' element animal.remove('fish')

# Updated animal print('Updated animal set:', animal)

đầu ra

Traceback (most recent call last):
  File "", line 5, in 
    animal.remove('fish')
KeyError: 'fish'

Bạn có thể sử dụng phương thức set discard() nếu không muốn gặp lỗi này

Phương thức

set.remove(element)
1 xóa phần tử đã chỉ định khỏi tập hợp. Tuy nhiên, nếu phần tử không tồn tại, tập hợp vẫn không thay đổi;

Hàm set erase() trong C++ được sử dụng để xóa một phần tử đơn lẻ được liên kết với khóa đã cho hoặc một dải phần tử ([đầu tiên, cuối cùng)) khỏi vùng chứa đã đặt. Do đó, kích thước sẽ bị giảm theo số lượng phần tử bị xóa

cú pháp

Tham số

Chức vụ. trình vòng lặp trỏ đến một phần tử cần xóa khỏi tập hợp

val. Giá trị cần xóa khỏi tập hợp

Đầu tiên. Bắt đầu phạm vi để xóa

Cuối cùng. Kết thúc phạm vi để xóa

Giá trị trả về

Nó trả về một iterator trỏ đến phần tử tiếp theo của phần tử đã xóa hoặc trả về số phần tử đã xóa

phức tạp

xóa (vị trí). hằng số khấu hao

xóa (val). Logarit trong kích thước container

xóa (đầu tiên, cuối cùng). Tuyến tính trong khoảng cách giữa đầu tiên và cuối cùng

Hiệu lực của trình vòng lặp

Các trình lặp, tham chiếu và con trỏ trỏ đến các phần tử bị loại bỏ bởi hàm không hợp lệ

Tất cả các trình lặp, con trỏ và tham chiếu khác đều giữ nguyên giá trị của chúng

Cuộc đua dữ liệu

Container được sửa đổi

Các yếu tố bị loại bỏ được sửa đổi. Việc lặp lại các phạm vi trong vùng chứa là không an toàn mặc dù việc truy cập đồng thời các phần tử khác là an toàn

An toàn ngoại lệ

Chức năng này không ném ngoại lệ

Nếu một phạm vi hoặc vị trí không hợp lệ được chỉ định, nó sẽ gây ra hành vi không xác định

ví dụ 1

Hãy xem ví dụ đơn giản để xóa phần tử bằng iterator

đầu ra

Before erasing the element: 
10
20
30

After erasing the element: 
10
20
30

Trong ví dụ trên, phần tử bị xóa bởi iterator it

ví dụ 2

Hãy xem một ví dụ đơn giản để xóa phần tử của tập hợp với giá trị khóa đã cho

đầu ra

Before erasing the element: 
10
20
30
40

After erasing the element: 
10
20
40

Trong ví dụ trên, hàm erase(value) sử dụng giá trị 30 từ tập hợp

ví dụ 3

Hãy xem một ví dụ đơn giản để xóa phần tử theo phạm vi đã cho

đầu ra

Before erasing the element are: 
Size is: 3
10
20
30

After erasing the element are: 
Size is: 0

Trong ví dụ trên, hàm erase(first, last) được sử dụng để xóa phần tử với phạm vi i đã cho. e. bắt đầu kết thúc

Chúng tôi đã tuyển chọn một danh sách các Khóa học C++ Tốt nhất, sẽ dạy cho bạn C++ Hiện đại tiên tiến nhất từ ​​cấp độ cơ bản đến nâng cao. Nó cũng sẽ giới thiệu với bạn về Con trỏ thông minh, Ngữ nghĩa di chuyển, Giá trị giá trị, hàm Lambda, tự động, mẫu Variadic, phạm vi dựa trên vòng lặp, Đa luồng và nhiều tính năng mới nhất khác của C++i. e. từ C++11 đến C++20

Việc xóa một phần tử khỏi set container rất đơn giản trong C++. Ý tưởng là chuyển phần tử đã cho vào hàm

Updated language set: {'English', 'French'}
0, hàm này sẽ xóa phần tử đó khỏi tập hợp

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#include

#include

 

int chính()

{

    tiêu chuẩn. unordered_set<char> s = { 'a', 'b', 'c', 'd' };

    int key = 'd';

 

    s. xóa(phím);

 

    cho (char const &c: s) {

        tiêu chuẩn. cout << c << ' ';

    }

 

    return 0;

}

Tải xuống Chạy mã

Đầu ra.

c b a

2. Xóa tất cả các phần tử thỏa mãn một vị từ

Chúng ta thậm chí có thể loại bỏ các phần tử khỏi một tập hợp thỏa mãn một vị từ một cách có điều kiện. Ý tưởng là sử dụng các trình vòng lặp để lặp lại tập hợp và gọi hàm

Updated language set: {'English', 'French'}
1 nếu phần tử hiện tại khớp với điều kiện. Lưu ý rằng việc gọi hàm
Updated language set: {'English', 'French'}
2 trong khi lặp đòi hỏi sự chú ý đặc biệt vì nó làm mất hiệu lực của trình lặp. Chúng ta có thể xử lý việc này theo nhiều cách