Cơ Bản về Kiểu Dữ Liệu "std::set" trong C++
std::set là kiểu dữ liệu được sử dụng khá phổ biến trong lập trình C++. Bài viết này sẽ hướng dẫn các bạn mới học C++ làm quen với kiểu dữ liệu std::set này.
std::set Là Gì
std::set là kiểu dữ liệu cho phép lưu trữ nhiều giá trị khác nhau gọi là phần tử, các phần tử trong cùng một std::set() có cùng một kiểu dữ liệu và duy nhất.
Ví dụ một std::set với các phần tử có kiểu dữ liệu int như sau:
std::set setOfIntegers setOfIntegers.insert(1); setOfIntegers.insert(2); setOfIntegers.insert(3);
Khi làm việc với kiểu dữ liệu std::set trong C++, bạn cần nhớ hai tính chất đặc trưng của kiểu dữ liệu này đó là:
- Mỗi phần tử trong cùng một std::set là duy nhất (hay unique). Điều này có nghĩa rằng nếu bạn không thể lưu trữ hai phần tử có giá trị như nhau trong cùng một std::set.
- Tất cả các phần trử trong cùng một std::set phải thuộc cùng một kiểu dữ liệu.
Tạo Một Set
Để sử dụng kiểu dữ liệu std::set thì điều đầu tiên bạn cần làm là tham chiếu tới thư viện chứa kiểu dữ liệu này:
#include #include int main() { }
Sau đó bạn có thể tạo một set với các phần tử có kiểu dữ liệu nhất định:
#include #include int main() { std::set mySetOfIntegers }
Để tạo một set với các phần tử có kiểu dữ liệu thuộc một class cho trước:
#include #include int main() { class MySampleClass; std::set setOfSampleClassType; return 0; }
Thêm Phần Tử vào Set
Để thêm một phần tử vào std::set chúng ta sử dụng method insert():
#include #include int main() { std::set mySetOfIntegers; mySetOfIntegers.insert(1); mySetOfIntegers.insert(2); mySetOfIntegers.insert(3); return 0; }
Do mỗi phần tử trong std::set là duy nhất nên trong trường hợp bạn thêm hai phần tử có cùng một giá trị thì chỉ phần tử đầu tiên được thêm vào set. Trong ví dụ dưới đây thì mySetOfIntegers sẽ chỉ có 3 phần tử thay vì 4:
#include #include int main() { std::set mySetOfIntegers; mySetOfIntegers.insert(1); mySetOfIntegers.insert(2); mySetOfIntegers.insert(3); mySetOfIntegers.insert(1); return 0; }
#include #include int main() { std::set mySetOfIntegers; mySetOfIntegers.insert(1); mySetOfIntegers.insert(2); mySetOfIntegers.insert(3); mySetOfIntegers.insert(1); // Chỉ 3 phần tử được thêm vào "mySetOfIntegers" std::cout<<"Số lượng phần tử: "<
Hiển thị:
Số lượng phần tử: 3
Lặp Qua Set
Để lặp qua một set bạn sử dụng hai phương thức begin() và end() của set kết hợp với một iterator.
Ví dụ để lặp qua mySetOfIntegers bạn có thể sử dụng đoạn code sau:
#include #include int main() { ... for (std::set::iterator it=mySetOfIntegers.begin(); it!=setOfNumbers.end(); ++it) std::cout << ' ' << *it; std::cout<<"\n"; return 0; }
Tìm Phần Tử Trong Set
Để tìm phần tử trong Set chúng ta sử dụng phương thức find() của std::set kết hợp với một iterator:
it = mySetOfIntegers.find("1"); if ( it != mySetOfIntegers.end() ) std::cout<<"'Tìm thấy số '1' trong Set"<<std::endl; else std::cout<<"Không tìm thấy số '1' trong Set"<<std::endl;
Guest
- 1970/01/01 Trả lờilàm sao để in ra các giá trị trong set ạ. ví dụ for(int i=0;i<n; i++){s.insert(a[i])}
sau đó em muốn in ra các phần tử trong s thì làm sao ạ
Guest
- 1970/01/01 Trả lờibạn cho chạy qua set giống lệnh trên rồi yêu cầu xuất ra con trỏ là được bạn ạ
ví dụ:
include<bits/stdc++.h>
using namespace std;
int main(){
set<int> s;
s.insert(1);
s.insert(2);
s.insert(3).
for(auto i:s)
{
cout<<i<<" ";
}
// hoac ban cung co the code ntn
for(auto i=s.begin();i!=s.end();i++)
{
cout<<i<<" "; ( co dau sao truoc i day minh viet o day no ko hien len )
}
// day cung la 1 cach
set<int>::iterator i;
for( i=s.begin();i!=s.end();i++)
{
cout<<i<<" ";( co dau sao truoc i day minh viet o day no ko hien len )
}
return 0;
}
tham khao them
https://www.geeksforgeeks.org/set-in-cpp-stl/
Guest
- 1970/01/01 Trả lờicho mình hỏi làm sao để sắp xếp set theo ý mình
Guest
- 1970/01/01 Trả lờibạn có thể tham khảo đoạn code sau nhé:
include<iostream>
include<set>
using namespace std;
struct cmp{
bool operator() (int a,int b) {return a>b;}
};
int main() {
}
Guest
- 1970/01/01 Trả lờianh ơi thế còn xóa phần tử trong set thì thế nào ạ
Guest
- 1970/01/01 Trả lờiCho mình hỏi làm sao để viết 1 code thực hiện các phép toán trên kiểu tập hợp ạ
Guest
- 1970/01/01 Trả lờiAd ơi, cho em hỏi về độ phức tạp khi thêm vào xoá ạ.
Guest
- 1970/01/01 Trả lờiAd ơi, làm thế nào để nhập phần tử từ từ bàn phím nhỉ(input)