写点什么

C++ 中 set 的用法学习

作者:向阳逐梦
  • 2023-07-10
    四川
  • 本文字数:1391 字

    阅读完需:约 5 分钟

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

发布于: 2023-07-10阅读数: 28
用户头像

向阳逐梦

关注

人生享受编程,编程造就人生! 2022-06-01 加入

某公司芯片测试工程师,嵌入式开发工程师,InfoQ签约作者,阿里云星级博主,华为云·云享专家。座右铭:向着太阳,追逐梦想!

评论

发布
暂无评论
C++中set的用法学习_向阳逐梦_InfoQ写作社区