set基本概念 构造和赋值
所有元素会在插入时自动排序
#include#include #include #include #include #include const int N = 2e5 + 10, M = 1e3 + 10; using namespace std; void printSet(set & s) { for (set ::iterator it = s.begin(); it != s.end(); it++) { cout << *it << ' '; } cout << endl; } void test01() { set s1; //插入数据 只有insert方式 s1.insert(10); s1.insert(40); s1.insert(30); s1.insert(20); s1.insert(30); printSet(s1);//所有元素自动被排序,不允许插入重复的值 //拷贝构造 set s2(s1); printSet(s2); //赋值 set s3; s3 = s2; printSet(s3); } int main() { std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); test01(); return 0; }
set大小和交换
#include#include #include #include #include #include const int N = 2e5 + 10, M = 1e3 + 10; using namespace std; void printSet(set & s) { for (set ::iterator it = s.begin(); it != s.end(); it++) { cout << *it << ' '; } cout << endl; } void test01() { set s1; s1.insert(10); s1.insert(20); s1.insert(30); s1.insert(40); printSet(s1); //判断是否为空 if (s1.empty()) { cout << "空" << endl; } else cout << "not empty" << endl; cout << "s1大小" << s1.size(); } void test02() { set s1; s1.insert(10); s1.insert(20); s1.insert(30); s1.insert(40); set s2; s2.insert(100); s2.insert(200); s2.insert(300); s2.insert(400); cout << "交换前"< set插入和删除
#include#include #include #include #include #include const int N = 2e5 + 10, M = 1e3 + 10; using namespace std; void printSet(set & s) { for (set ::iterator it = s.begin(); it != s.end(); it++) { cout << *it << ' '; } cout << endl; } void test01() { set s1; s1.insert(10); s1.insert(20); s1.insert(30); s1.insert(40); printSet(s1); //删除 s1.erase(s1.begin()); printSet(s1); //删除重载版本 s1.erase(30); printSet(s1); //清空 s1.erase(s1.begin(), s1.end());//==s1.clear() printSet(s1); } void test02() { } int main() { std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); test01(); return 0; } set查找和统计
#include#include #include #include #include #include const int N = 2e5 + 10, M = 1e3 + 10; using namespace std; void printSet(set & s) { for (set ::iterator it = s.begin(); it != s.end(); it++) { cout << *it << ' '; } cout << endl; } void test01() { set s1; s1.insert(10); s1.insert(20); s1.insert(30); s1.insert(40); //printSet(s1); set ::iterator pos = s1.find(100); if (pos != s1.end()) { cout << "ok:" << *pos< s1; s1.insert(10); s1.insert(20); s1.insert(30); s1.insert(40); s1.insert(30); s1.insert(30); int num = s1.count(30);//统计30的个数 对于set而言 统计结果要么是0要么是1 cout << "num:" << num; } int main() { std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); test02(); return 0; } set和multiset的区别
multiset可以插入重复的值
还没有评论,来说两句吧...