C++中set的用法学习

 更新时间:2023年05月05日 11:05:06   作者:码出世界的淡水鱼  
Set是C++ STL(标准模板库)的一个容器类,它用于存储不同的值,并且可以按照特定顺序进行访问和操作。本文就来通过一些示例和大家简单讲讲set的用法吧

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容器。

到此这篇关于C++中set的用法学习的文章就介绍到这了,更多相关C++ set内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++中int main(int argc, char** argv)的参数使用

    C++中int main(int argc, char** argv)的参数使用

    int main(int argc, char** argv) 是C和C++程序的入口点,其中argc和argv是用来接收从命令行传递给程序的参数的,本文就来介绍一下这两个参数的含义,感兴趣的可以了解一下的相关资料
    2024-01-01
  • Qt物联网管理平台之实现数据查询导出打印

    Qt物联网管理平台之实现数据查询导出打印

    这篇文章主要为大家介绍了如何利用Qt编写物联网管理平台中数据查询导出打印的功能,文字的示例代码讲解详细,感兴趣的可以了解一下
    2022-07-07
  • C语言实现猜数字的小游戏

    C语言实现猜数字的小游戏

    这篇文章主要为大家详细介绍了C语言实现猜数字的小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • C++深入讲解函数重载

    C++深入讲解函数重载

    C++ 允许多个函数拥有相同的名字,只要它们的参数列表不同就可以,这就是函数的重载(Function Overloading),借助重载,一个函数名可以有多种用途
    2022-07-07
  • C语言实现扫雷小游戏(扩展版可选择游戏难度)

    C语言实现扫雷小游戏(扩展版可选择游戏难度)

    游戏目标是找出所有没有地雷的方格,完成游戏;要是按了有地雷的方格,游戏失败;玩家可标记雷的位置,游戏以完成时间来评高低,并且用户可以选择游戏难度
    2019-10-10
  • C++ 强制类型转换详解

    C++ 强制类型转换详解

    这篇文章主要介绍的是C++ 强制类型转换详解,C语言中的强制转换主要用于普通数据类型、指针的强制转换,没有类型检查,转换不安全,下面我们来看看其具体语法及详细内容
    2021-11-11
  • C语言开发实现扫雷游戏

    C语言开发实现扫雷游戏

    这篇文章主要为大家详细介绍了C语言开发实现扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • C++利用两个栈实现队列的方法

    C++利用两个栈实现队列的方法

    这篇文章主要给大家介绍了关于C++利用两个栈实现队列的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • VS2019上配置CUDA的环境步骤

    VS2019上配置CUDA的环境步骤

    本文主要介绍了VS2019上配置CUDA的环境步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • C语言中函数参数的入栈顺序详解及实例

    C语言中函数参数的入栈顺序详解及实例

    这篇文章主要介绍了C语言中函数参数的入栈顺序详解及实例的相关资料,需要的朋友可以参考下
    2017-02-02

最新评论