C++ 无序容器

unordered map/multimap   unorderd set/multiset。 容器中元素的顺序没有被定义,并且有可能会被改变。

C++ 无序容器_第1张图片

每个元素通过Hash Function 计算一个值,根据这个值确定元素放在什么位置。如果Hash 函数设计的好的话,寻找一个元素只需要O(1)时间。如果Hash Function 设计的不好的话,寻找元素可能需要O(n)时间。

#include   
#include 
#include 
#include 

using namespace std;


int main()
{
	
	unordered_sets = { "red","green","blue" };
	auto it = s.find("green");//O(1)时间
	if (it != s.end())//解引用之前进行检查
	{
		cout << *it << endl;
	}
	s.insert("yellow");  //O(1)
	vector vec = { "purple","pink" };
	s.insert(vec.begin(),vec.end());
	cout << s.load_factor() << endl;// the ratio of number of element and number of bucket
	cout << "" << endl;
	string x = "red";
	cout << x << "is in the bucket :  " << s.bucket(x) << endl;
	cout << "the total bucket "<< s.bucket_count()<

 

unordered 容器的特性:

1、任意位置的快速的查找,删除,插入

2、element key 不能被改变 ,因为改变后会改变hash table

你可能感兴趣的:(C++ 无序容器)