C++程序用于在set STL中插入、删除和查找

set STL简介

STL(Standard Template Library)是一种基于模板库的程序设计方法。其中的set是STL提供的一种关联式容器,用于存储一组元素,同时能够在O(log n)的时间复杂度内进行插入、删除和查找操作。set容器中不允许出现重复元素,且默认以升序方式排序存储。

插入操作

在set中插入元素的方法是使用insert()函数。该函数会把待插入元素按照规定的顺序插入到set中。

代码实现如下:

#include<set>

set<int> mySet;

mySet.insert(1);

mySet.insert(3);

mySet.insert(2);

上述代码将1、3、2插入到set中,并按升序排序。插入操作的时间复杂度为O(log n)。

删除操作

删除单个元素

在set中删除单个元素的方法是使用erase()函数,该函数接受一个迭代器参数,表示要删除元素的位置。

代码实现如下:

set<int> mySet;

mySet.insert(1);

mySet.insert(3);

mySet.insert(2);

set<int> :: iterator it = mySet.find(3); //查找元素3的位置

if(it != mySet.end())

mySet.erase(it); //删除元素3

上述代码的时间复杂度也是O(log n)。

删除一段元素

在set中删除一段元素也很简单,只需指定要删除的元素区间即可,使用erase()函数。

代码实现如下:

set<int> mySet;

mySet.insert(1);

mySet.insert(2);

mySet.insert(3);

mySet.insert(4);

mySet.insert(5);

mySet.erase(mySet.find(2), mySet.find(5)); //删除元素2到元素5(不包括元素5)

上述代码将删除元素2、3、4,时间复杂度为O(log n)。

查找操作

在set中查找元素也很简单,只需使用find()函数即可。如果查询到该元素则返回该元素的迭代器,否则返回end()迭代器。

代码实现如下:

set<int> mySet;

mySet.insert(1);

mySet.insert(2);

mySet.insert(3);

mySet.insert(4);

mySet.insert(5);

set<int> :: iterator it = mySet.find(3); //查找元素3的位置

if(it != mySet.end())

cout << "元素3的位置是:" << *it << endl;

else

cout << "未找到元素3!" << endl;

上述代码查找到元素3,并输出结果“元素3的位置是:3”。find()函数的时间复杂度为O(log n)。

总结

set是STL提供的一种关联式容器,用于存储一组元素,同时能够在O(log n)的时间复杂度内进行插入、删除和查找操作。set容器中不允许出现重复元素,且默认以升序方式排序存储。插入、删除和查找操作都很方便,只需要调用相应的函数即可,时间复杂度都是O(log n)。

后端开发标签