首页 > 编程语言 >C++中set的用法学习

C++中set的用法学习

时间:2023-07-10 23:04:39浏览次数:48  
标签:insert Set int 元素 C++ 用法 set include

C++中set的用法学习_迭代器

Set是C++ STL(标准模板库)的一个容器类,它用于存储不同的值,并且可以按照特定顺序进行访问和操作。

Set是C++ STL(标准模板库)的一个容器类,它用于存储不同的值,并且可以按照特定顺序进行访问和操作。Set是一种基于红黑树实现的关联容器,也就是说它的元素按照固定的顺序排列,且每个元素都唯一。

Set中包含的元素是自动排序的,因此,如果你需要在存储值的同时能够高效的进行查找,那么Set会是一个很好的选择。

创建Set对象

为了使用Set对象,首先必须包含头文件。下面是创建一个Set对象的语法:

std::set<DataType> my_set

其中,DataType表示元素的数据类型,而my_set则是创建的Set对象名称。

接下来创建一个名为int_set的Set对象,其中元素为整型:

#include<set>
#include<iostream>

int main(){
    std::set<int> int_set;
    return 0;
}

添加元素

为了向Set对象中添加元素,我们可以使用insert()方法。在添加元素的同时,也会保证集合中的元素不重复,就是说如果在Set中已经包含了该元素,那么新加入的数据将不会被插入到Set中。下面是插入元素到Set中的示例:

#include<set>
#include<iostream>

int main(){
    std::set<int> int_set;
    int_set.insert(3);
    int_set.insert(2);
    int_set.insert(1);
    return 0;
}

删除元素

Set中还提供了erase()方法来删除Set中的元素。它的参数可以是一个迭代器,也可以是元素的值。下面是删除指定元素的示例:

#include<set>
#include<iostream>

int main(){
    std::set<int> int_set;
    int_set.insert(3);
    int_set.insert(2);
    int_set.insert(1);
    int_set.erase(2);
    return 0;
}

迭代器的使用

迭代器提供了访问Set中元素的方法,可以遍历Set中的所有元素。可以使用begin()方法获取第一个元素的迭代器,使用end()获取最后一个元素的下一个位置:

#include<set>
#include<iostream>

int main(){
    std::set<int> int_set;
    int_set.insert(3);
    int_set.insert(2);
    int_set.insert(1);
    for (std::set<int>::iterator it=int_set.begin(); it!=int_set.end(); ++it){
        std::cout << *it << " ";
    }
    return 0;
}

以上代码会输出:1 2 3。

C++ Set还提供了其他的常见操作,例如:

  • find():查找Set中是否包含指定元素并返回该元素的迭代器,若没有找到则返回end()。
  • size():返回Set中元素的个数。
#include<set>
#include<iostream>

int main(){
    std::set<std::string> name_set;
    name_set.insert("Tom");
    name_set.insert("Bob");
    name_set.insert("Jerry");
    std::set<std::string>::iterator it = name_set.find("Tom");
    if (it != name_set.end()){
        std::cout << "Tom is in the Set." << std::endl;
    } else {
        std::cout << "Tom is not in the Set." << std::endl;
    }
    std::cout << "The size of name_set is " << name_set.size() << std::endl;
    return 0;
}

以上示例代码更换了一个数据类型,演示了对字符串类型的Set的操作,输出结果为:

Tom is in the Set.
The size of name_set is 3

Set提供的操作使其成为了STL中非常有用的容器之一。由于其使用红黑树实现,查找和插入操作都非常快速,而且还可以保证数据存储的唯一性。我们可以根据自己的需要去选择容器,如果需要保证数据唯一性且操作速度要快,那么建议使用Set容器。

标签:insert,Set,int,元素,C++,用法,set,include
From: https://blog.51cto.com/u_15641375/6681316

相关文章

  • 1003 Emergency C++
    Asanemergencyrescueteamleaderofacity,youaregivenaspecialmapofyourcountry.Themapshowsseveralscatteredcitiesconnectedbysomeroads.Amountofrescueteamsineachcityandthelengthofeachroadbetweenanypairofcitiesaremarke......
  • c++_ 贪吃蛇_蛇尾坐标记录问题
    c++_贪吃蛇_蛇尾坐标记录问题思路:利用双指针,把蛇尾的状态数组向后移动1位。intprevX=tailX[0];intprevY=tailY[0];//之前的蛇头坐标给prevX,prevYintprev2X,prev2Y;tailX[0]=x;tailY[0]=y;//更新蛇头坐标for(inti=1;i<nTail;i++)......
  • c++ day 6
    昨天小偷了个懒今天好好搞回来今天还要复习一个概念知识,我这里只是记录我学习过程中的点子。程序性能分析我们先来看一个小故事故事由chatgpt生成 时间复杂度和空间复杂度是分析算法效率和资源消耗的重要指标。让我们逐一了解这两个概念。时间复杂度是衡量算法执行所需......
  • requests高级用法、代理池搭建
    requests高级用法1.自动携带cookie的session对象#session对象----》已经模拟登录上了一些网站---》单独把cookie取出来importrequestsheader={'Referer':'http://www.aa7a.cn/user.php?&ref=http%3A%2F%2Fwww.aa7a.cn%2F','User-Agent':'Mozilla/......
  • 1002 A+B for Polynomials C++
    Thistime,youaresupposedtofind A+B where A and B aretwopolynomials.InputSpecification:Eachinputfilecontainsonetestcase.Eachcaseoccupies2lines,andeachlinecontainstheinformationofapolynomial:K N1​ aN1​​ N2​ aN2​​ ......
  • 聊聊Zookeeper技术内幕之客户端与SetData请求处理
    从客户端会话创建到网络连接、请求处理,简单的叙述下流程与逻辑客户端客户端是开发人员使用ZooKeeper最主要的途径,ZooKeeper的客户端主要由以下几个核心组件组成。ZooKeeper实例:客户端的入口。ClientWatchManager:客户端Watcher管理器。HostProvider:客户端地址列表管理器(管理......
  • 爬虫学习02 requests高级用法
    1requests高级用法1.0自动携带cookie的session对象#session对象----》已经模拟登录上了一些网站---》单独把cookie取出来-res.cookies是cookiejar对象,里面有get_dict()方法转换成字典-转成字典res.cookies.get_dict()#使用session发送请求,cookie自动携带sess......
  • setter注入
       ......
  • 如何使用C++11 STD::THREAD设置堆栈大小?
    本教程将介绍如何使用C++11std::thread设置线程的堆栈大小。C++11std::thread是一种轻量级的多线程实现,它的灵活性使得它成为一个流行的选择。但是,在某些情况下,您可能需要设置线程的堆栈大小来满足您的需求。在开始本教程之前,我们假设您已经熟悉了C++11std::thread的基础知识......
  • 遇到难题了,在线等大佬求解\C++
    intmain(){ characcounts[]={0}; charpassword[]={0}; inti=0; printf("请输入账号:>"); scanf("%s",accounts); (strcmp(accounts,"1234")==0); for(i=1;i<=3;i++) { printf("请输入密码:>"); ......