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<int> 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ộtstd::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<iostream>
#include<set>
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<iostream>
#include<set>
int main()
{
std::set<int> 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<iostream>
#include<set>
int main()
{
class MySampleClass;
std::set<MySampleClass> 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<iostream>
#include<set>
int main()
{
std::set<int> 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<iostream>
#include<set>
int main()
{
std::set<int> mySetOfIntegers;
mySetOfIntegers.insert(1);
mySetOfIntegers.insert(2);
mySetOfIntegers.insert(3);
mySetOfIntegers.insert(1);
return 0;
}
#include<iostream>
#include<set>
int main()
{
std::set<int> 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ử: "<<mySetOfIntegers.size()<<std::endl;
return 0;
}
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<iostream>
#include<set>
int main()
{
...
for (std::set<int>::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;
là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 ạ
cho mình hỏi làm sao để sắp xếp set theo ý mình
anh ơi thế còn xóa phần tử trong set thì thế nào ạ
Cho 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 ạ
Ad ơi, cho em hỏi về độ phức tạp khi thêm vào xoá ạ.
Ad ơi, làm thế nào để nhập phần tử từ từ bàn phím nhỉ(input)