STL set(集合)学习笔记

语法

1. 头文件: #include < set >

2. 定义: set < 类型 > 名字
e.g. set < int > myset; 即定义了一个存放int类型数据,名为Myset的集合容器。

3. 插入元素: 容器名字. insert( 待插入元素名字 )
e.g. myset. insert( x ); 即在Myset容器中插入了名为x的元素

4. set的特性

  1. 唯一性 作为集合,其中元素必不重复,如重复插入,该语句会被忽略
  2. 已排序 set默认的顺序是自小到大,读入元素后会自动排序,.begin()为最小值,.end()为最大值的下一位

在set中要对元素进行读取,删除,插入的操作,需要借助迭代器来实现。

5. 迭代器: set < 类型 > :: iterator 迭代器名字;
e.g. set < int > :: iterator myiter; 即定义了一个名为myiter的对Int类型的迭代器

那么如何操作迭代器呢?
3. .begin() 指向首元素
4. .end() 指向尾元素的再下一位(it - - 后 *it读取尾元素)
5. .find(被查找元素) 指向被查找元素的位置

6. 元素的遍历

set < int > :: iterator myiter;
for(it = myset.begin();it != myset.find(totalsum);++it)
{
    cout << *it << endl;
}

7. 元素的删除
成员函数 clear() 会删除 set 的所有元素。成员函数 erase() 会删除迭代器指定位置的元素或与对象匹配的元素。例如:

set<int> numbers {2, 4, 6, 8, 10, 12, 14};

auto iter = numbers.erase(++begin(numbers));
auto n = numbers.erase(12);

n = numbers.erase(13);
numbers.clear();

成员函数 erase() 可以删除一段元素:

set<int> numbers {2, 4, 6, 8, 10, 12, 14};

// iter1 points to 1st element
auto iter1 = begin(numbers); 

// Points to 6th element-12
advance(iterl, 5); 

// Remove 2nd to 5th inclusive. iter points to 12
auto iter = numbers.erase(++rbegin(numbers), iter1);

8. 元素的个数: 容器名字.size()
e.g. int num = myset.size(); num来记录set内元素的个数

参考这里 https://blog.csdn.net/u_nravel/article/details/80425387

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值