C++中的哈希集

C++中的哈希集

一个由唯一元素组成的 无序集合C++中 被称为 hashset。 标准的集合操作,如删除,包含在C++中。交叉、对称差分和联合是由c++构成的基于集合的标准操作。对于项目的识别和搜索,hashset中的哈希函数在c++中非常有用。hashset在识别组成列表中的重复项方面起着重要作用。通过这个哈希函数,我们可以得到不同的值,甚至是重复的值。 无序列表(hashset) 需要一些时间,即 o ( 1 ) ,这在本质上是不变的。在其他情况下,所花的时间可能是 o(n) ,是线性时间。在这种情况下,我们将学习所有关于c++中的hashset。

语法

在c++中插入hashset或无序集合的语法如下,它是一种字符串类型。

int main()
{
unordered_set  CBA ;
CBA.insert("") ;
CBA.insert("") ;
..................
}

一些C++哈希集的例子和它们的工作机制。

unordered_setHashSet 是一个集合,其中的键是以任何顺序存储的。对于HashSet,有许多函数被使用。但最常使用的函数如下。

  1. size函数是用来计算容量的。
  2. empty函数也用于容量。
  3. find用于搜索一个键。
  4. 擦除函数用于修改它。
  5. insert函数也用于修改。

一个 unordered_set 只允许唯一的键,而一个 unordered_multiset 只允许重复的键通过它。

例子。

通过不同类型的例子,C++ HashSet的整个工作机制已被解释如下。

1) 使用{……}的C++哈希集例子这是一个初始化的列表。

在C++中使用HashSet,我们给出了一个基本的例子,其中我们在初始化列表{…..}的帮助下初始化了这个集合。

代码。

#include 
#include 
int main()
{
std::unordered_set P { 2017, 2016, 2015 };
for (auto Q: P)
std::cout << Q << '\n';
return 0;
}

输出。

2015
2016
2017

2) 使用二元谓词来传递比较对象。

使用二元谓词集,比较对象在下面的例子中被传递。集合排序是用两个相同类型的元素定义的。

代码。

#include 
#include 
struct JAVATPOINT {
template
bool operator()(const X& n, const X& p) const
{
return n > p;
}
};
int main()
{
std::set values = { 120, 80, 250 };
for (auto S: values)
std::cout << S << '\n';
return 0;
}

输出。

250
120
80

3)C++中使用插入、迭代、查找和声明的hashset例子。

在下面给出的例子中,插入、擦除和查找操作的平均时间是不变的。当在集合中,键不存在时,例子中给出了查找函数。它将 Iterator 返回到 end()。 而另一方面,当集合中的键存在时,Iterator很容易回到键的位置。对于作为指针的键值,Iterator被用来接收键,并且键可以通过 解读*操作符 来检索

代码。

#include 
using namespace std;
int main()
{
unordered_set  CBA ;
CBA.insert("Developer") ;
CBA.insert("Programmer") ;
CBA.insert("tester") ;
CBA.insert("HR") ;
CBA.insert("Coder") ;
string key = "JAVATPOINT" ;
if (CBA.find(key) == CBA.end())
cout << key << " one of the best company." << endl << endl ;
else
cout << "retrieved" << key << endl << endl ;
key = "Programmer";
if (CBA.find(key) == CBA.end())
cout << key << "can not retrieve\n" ;
else
cout << "retrieved " << key << endl ;
cout << "\nhere is the designations : " < :: iterator itr;
for (itr = CBA.begin(); itr != CBA.end(); itr++)
cout << (*itr) << endl;
}

输出。

JAVATPOINT one of the best company.

retrieved Programmer

here is the designations :
HR
tester
Programmer
Coder
Developer

When the key data is not found in the order list:
JAVATPOINT one of the best company

Program can not retrieve

here is the designations :
HR
tester
Programmer
Coder
Developer

4) 使用无序集搜索重复的内容。

在下面的例子中,我们提供了一个整数的集合,在这个集合中,重复的内容已经被找到并显示在输出中。

代码示例。

#include 
using namespace std;
void printDuplicates(int deepak[], int M)
{
unordered_set JAVATPOINT;
unordered_set similar;

for (int P = 0; P < M; P++)
{
if (JAVATPOINT.find(deepak[P]) == JAVATPOINT.end())
JAVATPOINT.insert(deepak[P]);
else
similar.insert(deepak[P]);
}
cout << "similar contents are : ";
unordered_set :: iterator start;
for (start = similar.begin(); start != similar.end(); start++)
cout << *start << " ";
}
int main()
{
int deepak[] = {9, 3, 6, 1, 6, 2, 4, 9, 5, 7, 0, 8};
int M = sizeof(Deepak) / sizeof(int);
printDuplicates(Deepak, M);
return 0;
}

输出。

similar contents are : 9 6

总结。

在上述背景下,我们已经了解了C++中的HashSet以及它的工作机制。在这篇文章中,我们还通过不同的例子了解了C++哈希集的各种应用。在查找重复的内容和所需的内容时,C++的哈希集在其中起着至关重要的作用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程