21xrx.com
2025-03-29 20:06:20 Saturday
文章检索 我的文章 写文章
详解C++ unordered_set的使用方法
2023-06-27 06:09:37 深夜i     47     0
C++ unordered_set 使用方法 详解

C++中的unordered_set是一个无序集合容器,可以存放任何类型的数据,包括自定义类型。它的优点是快速查找元素和高效的插入、删除操作。接下来我们来详解C++ unordered_set的使用方法。

1. 头文件

首先需要包含头文件

2. 定义unordered_set

定义unordered_set时需要指明存储元素的数据类型,格式如下:

std::unordered_set<int> mySet;

这样就定义了一个名为mySet的unordered_set,其中存储的元素类型是int。

3. 插入元素

可以使用insert()方法向unordered_set中插入元素,如:

mySet.insert(5);

这样就将5插入到mySet中。

4. 删除元素

使用erase()方法可以删除unordered_set中的元素,如:

mySet.erase(5);

这样就将mySet中的元素5删除了。

5. 查找元素

可以使用find()方法查找元素在unordered_set中的位置,如:

std::unordered_set<int>::iterator itr = mySet.find(5);

这样就将mySet中元素5的位置赋给了itr,如果该元素不存在,则itr指向mySet.end()。

6. 遍历元素

可以使用for循环或者迭代器遍历unordered_set中的所有元素,如:

for(auto item:mySet)
  std::cout<<item<<std::endl;

或者使用迭代器:

for(std::unordered_set<int>::iterator itr=mySet.begin();itr!=mySet.end();itr++){
  std::cout<<*itr<<std::endl;
}

7. 自定义类型

当需要存储自定义类型数据时,需要重载hash函数和==运算符,如:

class Student{
public:
  std::string name;
  int age;
  Student(std::string name_, int age_):name(name_),age(age_){}
  bool operator==(const Student &s) const
    return name==s.name && age==s.age;
  
};
class StudentHash{
public:
  size_t operator()(const Student &s) const{
    return std::hash<std::string>()(s.name) ^ std::hash<int>()(s.age);
  }
};
std::unordered_set<Student,StudentHash> myStudents;

这样就定义了一个存储自定义类型Student的unordered_set,使用自定义的hash函数和==运算符实现元素的查找和插入。

通过以上的详解,相信大家对C++ unordered_set的使用方法有了更加清晰的认识。需要注意的是,在使用unordered_set时需要注意元素的hash函数和==运算符的重载,才能保证元素的存储和查找准确无误。

  
  
下一篇: main函数

评论区