21xrx.com
2024-11-08 21:09:50 Friday
登录
文章检索 我的文章 写文章
详解C++ unordered_set的使用方法
2023-06-27 06:09:37 深夜i     --     --
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函数

评论区

{{item['qq_nickname']}}
()
回复
回复