有没有好记一点,c++ ,set容器遍历方法?(看过来)

老方法

set count<int> kun ;
//咱这就不实例化,所以说,这代码直接跑是跑不起来的
set<int>::iterator it;    //set类型迭代器
for(it=order.begin();it!=order.end();it++){
     cout<<*it<<endl;    //遍历输出
  }

在以前的方法中需要,建立set类型的迭代器,才能实现遍历,多少有点麻烦,现在,auto,出来了,懒孩子们得救了,具体看下面

新思路

set count<int> kun ;
for(auto i=order.begin() ;i!=order.end(); i++){
            cout<<*i<<endl ;
        }

再补充一点set的基础知识吧,方便以后自己查看

set关联式容器;set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。set的内部采用的是一种非常高效的平衡检索二叉树:红黑树,也称为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。

常用方法:
1、begin(); 返回set容器的第一个元素,其中反向遍历用rbegin()
2、end(); 返回set容器的最后一个元素,其中反向遍历用rend()
3、clear(); 删除set容器中的所有的元素
4、empty(); 判断set容器是否为空
5、max_size(); 返回set容器可能包含的元素最大个数
6、size(); 返回当前set容器中的元素个数
6、Tip: 需要注意的是begin()和end()函数是不检查set是否为空的,使用前最好使用empty()检验一下set是否为空.
6、count(); 用来查找set中某个某个键值出现的次数。这个函数在set并不是很实用,因为一个键值在set只可能出现0或1次,这样就变成了判断某一键值是否在set出现过了。
7、erase(iterator); 删除定位器iterator指向的值
8、erase(first,second); 删除定位器first和second之间的值
9、erase(key_value); 删除键值key_value的值
10、insert(key_value); 插入元素

C++中,可以使用迭代器来遍历set容器和map容器。下面是遍历这两种容器的示例代码: 遍历set容器: ```cpp std::set<int> mySet = {1, 2, 3, 4, 5}; // 使用迭代器遍历set容器 for (std::set<int>::iterator it = mySet.begin(); it != mySet.end(); ++it) { int element = *it; // 获取当前元素的值 // 执行操作,例如打印或处理元素 } ``` 遍历map容器: ```cpp std::map<int, std::string> myMap = {{1, "apple"}, {2, "banana"}, {3, "cherry"}}; // 使用迭代器遍历map容器 for (std::map<int, std::string>::iterator it = myMap.begin(); it != myMap.end(); ++it) { int key = it->first; // 获取当前键的值 std::string value = it->second; // 获取当前值的值 // 执行操作,例如打印或处理键值对 } ``` 另外,C++11引入了范围-based for循环,也可以用于遍历set容器和map容器遍历set容器: ```cpp std::set<int> mySet = {1, 2, 3, 4, 5}; // 使用范围-based for循环遍历set容器 for (const auto& element : mySet) { // 执行操作,例如打印或处理元素 } ``` 遍历map容器: ```cpp std::map<int, std::string> myMap = {{1, "apple"}, {2, "banana"}, {3, "cherry"}}; // 使用范围-based for循环遍历map容器 for (const auto& pair : myMap) { int key = pair.first; // 获取当前键的值 std::string value = pair.second; // 获取当前值的值 // 执行操作,例如打印或处理键值对 } ``` 请注意,在遍历map容器时,使用`pair.first`获取键,使用`pair.second`获取值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值