21xrx.com
2024-11-08 22:14:50 Friday
登录
文章检索 我的文章 写文章
C++中如何遍历set
2023-06-27 17:08:36 深夜i     --     --
C++ 遍历 set

C++中的set是按照红黑树的数据结构实现的集合,它能够自动实现元素的排序,并且插入和查询的时间复杂度均为O(logn)。然而,当需要遍历set中的元素时,又该如何操作呢?

首先,需要知道set中的元素是按照一定的顺序排列的,因此如果要遍历set,可以使用迭代器来实现。set有两种迭代器:正向迭代器和反向迭代器。

正向迭代器可以通过begin()和end()函数获取,begin()返回set中第一个元素的迭代器,而end()返回set中最后一个元素的下一个位置的迭代器。因此,可以使用while循环来遍历所有元素,代码如下:


set<int> mySet;

set<int>::iterator it;

for (int i = 1; i <= 10; i++) {

  mySet.insert(i);

}

it = mySet.begin();

while (it != mySet.end()) {

  cout << *it << " ";

  it++;

}

上述代码中,首先定义了一个set,并插入了1到10的整数。然后定义了一个迭代器it,并将其初始化为set的begin()。接下来通过while循环遍历整个set,输出每个元素。注意要使用迭代器的*运算符获取元素的值。

反向迭代器可以通过rbegin()和rend()函数获取,rbegin()返回set中最后一个元素的迭代器,而rend()返回set中第一个元素的前一个位置的迭代器。同样地,可以使用while循环来遍历所有元素,代码如下:


set<int> mySet;

set<int>::reverse_iterator rit;

for (int i = 1; i <= 10; i++) {

  mySet.insert(i);

}

rit = mySet.rbegin();

while (rit != mySet.rend()) {

  cout << *rit << " ";

  rit++;

}

上述代码中,首先定义了一个set,并插入了1到10的整数。然后定义了一个反向迭代器rit,并将其初始化为set的rbegin()。接下来通过while循环遍历整个set,输出每个元素。同样要注意使用迭代器的*运算符获取元素的值。

因此,通过迭代器的使用,可以很方便地遍历set中的元素。需要注意的是,set中的元素是不能重复的,因此不需要考虑重复元素的问题。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复