vector是序列式容器,按照下表访问。 2.数据初始化 含有一维数组和二维数组的初始化 #include"vector"usingnamespacestd; typedef vector<int>Vector;intmain() { Vector vec(10,5); Vector vec1(vec);//Vector vec1=vec这两种方式是等价的Vector vec2(vec.begin(),vec.end()); Vector vec3={1,2,3,4...
它内部会对元素进行排序,因此可以高效地进行查找和插入操作。 vector:是动态数组,可以在尾部快速插入和删除元素。它的内存分配是连续的,支持随机访问,但在中间或开头进行插入和删除操作较慢。适用于需要频繁地进行随机访问的场景。 list:是双向链表,可以在任意位置高效地插入和删除元素。它不支持随机访问,但对于大量的...
但是需要注意,vector里面每个位置存的是一个一个的桶,当swap后,newHT出了作用域就会调用析构,此时只会销毁每个位置,而不会销毁每个桶,所以需要我们自己写出析构函数。 上面的扩容方式,new了多少个节点,就得销毁多少个节点,所以不太好,下面是另一种方式: 重新开一个vector,将旧表里的桶依次取出放到新表对应的...
1.1 vector(数组)封装动态数组的顺序容器。 1.2 queue(队列)是容器适配器,他是FIFO(先进先出)的数据结构。 1.3 deque(双端队列)是有下标顺序容器,它允许在其首尾两段快速插入和删除。 1.4 set(集合)集合基于红黑树实现,有自动排序的功能,并且不能存放重复的元素。 1.5 unordered_set(无序集合)基于哈希表实现,...
int main() { unordered_map<char, vector<int> > maptest; // key对应多个属性 maptest['D'] = {0, 1}; cout<<"result:"<<maptest['D'][0]<<endl; // 两个map可组成二维数组,注意下标不能重复unordered_map<int,unordered_map<int,int>>mapmaptest;mapmaptest[0][0]=1;// 如果下标重复...
unordered_map是基于hash_table实现,一般是由一个大vector,vector元素节点可挂接链表来解决冲突来实现。hash_table最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。
最好的查询是,只要进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是 其底层结构不同,他们不再以红黑树作为底层结构,而是以挂哈希桶的哈希表作为底层结构,就是用存储结点指针的vector来实现哈希表,哈希表的每个位...
(pmc));cout<<"vector插入1000万条数据,耗时:"<<(GetTickCount()-nowClock)<<"ms"<<" 消耗内存:"<<pmc.WorkingSetSize/1024-mem_size<<" K"<<endl;mem_size=pmc.WorkingSetSize/1024;nowClock=GetTickCount();std::sort(data.begin(),data.end());cout<<"vector排序1000万条数据,耗时:"<<(...
#pragmaonce#include<iostream>#include<vector>namespaceMySTL{template<classK,classT,classHash,classKeyofT>classHashBucket{typedefHashNode<T>Node;private:std::vector<Node*>_Bucket;size_t _n;};} 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ...
在上面的示例代码中,我们定义了一个std::unordered_map容器,键的类型为std::vector<int>,值的类型为std::string。我们自定义了VectorHash和VectorEqual结构体作为哈希函数和相等比较函数,分别用于处理向量类型的键。然后,我们创建了一个向量作为键,将其与一个字符串值关联,并将其插入到std::unordered_map...