21xrx.com
2024-12-27 21:23:34 Friday
登录
文章检索 我的文章 写文章
C++中的set和upper_bound函数
2023-06-29 04:33:08 深夜i     --     --
C++ set upper_bound函数 数据结构 二分搜索 算法优化

C++语言中的STL(标准模板库)为用户提供了很多方便的工具和结构来简化程序的开发和提高效率。set和upper_bound函数正是其中的两个常用工具之一。

set是一个用于存储元素的有序集合容器。与其他容器不同的是,其内部元素按照一定的顺序进行排列,并且不允许数据的重复出现。set常用的操作包括插入、查找、删除等。下面是一个简单的使用set的例子:


#include <iostream>

#include <set>

int main() {

  std::set<int> mySet;

  

  mySet.insert(1);

  mySet.insert(2);

  mySet.insert(3);

  

  if (mySet.count(2))

    std::cout << "2 is in the set" << std::endl;

  

  else

    std::cout << "2 is not in the set" << std::endl;

  

  

  mySet.erase(2);

  

  for (int i : mySet)

    std::cout << i << " ";

  

  

  return 0;

}

上述代码中,我们首先定义了一个类型为int的set容器(mySet),并在其中插入了三个元素1、2、3。接着,我们使用count方法检查2是否在该set中,如果存在则输出"2 is in the set",否则输出"2 is not in the set"。在下一句代码中,我们将2从mySet中删除。最后,我们使用for循环将容器中的元素依次输出。

除了基本的插入、查找、删除等操作,set还可以进行一些高级操作,例如查找第一个大于某个值的元素(upper_bound方法)。

upper_bound方法接受一个值作为参数,并返回set中第一个大于该值的元素的迭代器。如果set中不存在大于该值的元素,则返回set的end迭代器。下面是upper_bound方法的一个例子:


#include <iostream>

#include <set>

int main() {

  std::set<int> mySet;

  

  mySet.insert(1);

  mySet.insert(2);

  mySet.insert(3);

  

  auto upper = mySet.upper_bound(2);

  

  std::cout << "The first element greater than 2 is " << *upper << std::endl;

  

  return 0;

}

上述代码中,我们定义了一个类型为int的set容器,并在其中插入了三个元素1、2、3。在第4行,我们使用upper_bound方法查找第一个大于2的元素。由于set中存在3这个元素,因此upper_bound方法返回的迭代器指向元素3。最后,我们输出该元素的值。

综上所述,C++语言中的set和upper_bound方法是非常有用的工具,可以为我们提供方便的数据存储和高级的查找操作。在实际开发中,我们可以灵活地运用这些工具来解决各种问题。

  
  

评论区

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