STL中的map,list,vectors常见,常用容器

  列举三个较为常见,用的也比较多的SRL模板容器

一、vectors,list(顺序结构)

  1、vectors相当于数组

    

  2、list

    

   3.vector与list的区别:

          vector和数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此     它能非常好的支持随即存取,即 [ ] 操作符,但由于它的内存空间是连续的,所以在中间     进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新     申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。         list就是数据结构中的双向链表,因此它的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随即存取变的非常没有效率,但由于链表的特点,它可以以很好的效率支持任意地方的删除 和插入。

二、map(存放的是不重复的成员)

  

  map的遍历:

    map<.....> M(容器名称);

    map<.....> ::iterator  iter;

    for(iter = M.begin();iter != M.end(); iter++)

    {

      iter->first(容器中第一个成员)

      iter->second(第二个)

    }

原文地址:https://www.cnblogs.com/gumpzlc/p/9695533.html

时间: 2024-09-30 06:17:37

STL中的map,list,vectors常见,常用容器的相关文章

STL 中的map 与 hash_map的理解

可以参考侯捷编著的<STL源码剖析> STL 中的map 与 hash_map的理解 1.STL的map底层是用红黑树存储的,查找时间复杂度是log(n)级别: 2.STL的hash_map底层是用hash表存储的,查询时间复杂度是常数级别: 3.什么时候用map,什么时候用hash_map? 这个要看具体的应用,不一定常数级别的hash_map一定比log(n)级别的map要好,hash_map的hash函数以及解决地址冲突等都要耗时,而且众所周知hash表是以空间效率来换时间效率的,因而h

关于STL中的map和hash_map

以下全部copy于:http://blog.chinaunix.net/uid-26548237-id-3800125.html 在网上看到有关STL中hash_map的文章,以及一些其他关于STL map和hash_map的资料,总结笔记如下:     1.STL的map底层是用红黑树实现的,查找时间复杂度是log(n):     2.STL的hash_map底层是用hash表存储的,查询时间复杂度是O(1):     3.什么时候用map,什么时候用hash_map?     这个药看具体的

STL中关于map和set的四个问题?

STL map和set的使用虽不复杂,但也有一些不易理解的地方,如: # 为何map和set的插入删除效率比用其他序列容器高? # 为何每次insert之后,以前保存的iterator不会失效? # 为何map和set不能像vector一样有个reserve函数来预分配数据? # 当数据元素增多时(10000到20000个比较),map和set的插入和搜索速度变化如何? 或许有得人能回答出来大概原因,但要彻底明白,还需要了解STL的底层数据结构. C++ STL 之所以得到广泛的赞誉,也被很多人

C++ STL中的map用红黑树实现,搜索效率是O(lgN),为什么不像python一样用散列表从而获得常数级搜索效率呢?

C++ STL中的标准规定: map, 有序 unordered_map,无序,这个就是用散列表实现 谈谈hashmap和map的区别,我们知道hashmap是平均O(1),map是平均O(lnN)的,实践上是不是hashmap一定优于map呢?这里面有几个因素要考虑: hashmap的内存效率比map差,这是显而易见的 map的查找效率实践上是非常高的,如在1M数据中查找一个元素,需要多少次比较呢?20次. map的查找效率比hashmap稳定. hashmap查找时候要算hash,这个最坏时

STL中的map用法详解

STL中map用法详解 说明:如果你具备一定的C++ template知识,即使你没有接触过STL,这个文章你也应该可能较轻易的看懂.本人水平有限,不当之处,望大家辅正. 一.map概述 map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道.这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),

[转]正确使用C++ STL中的map容器

先声明:下面的文章是针对windows的用法,因为std::map的erase函数的windows的实现版本是返回一个std::map的迭代器,但是STL标准里面的该函数的返回值确是: map.erase有3个重载:void erase ( iterator position );size_type erase ( const key_type& x );void erase ( iterator first, iterator last ); . 所以下面的代码中的最后一个例子仅仅可以在win

STL中的map/multimap小结

(1)使用map/multimap之前必须包含头文件<map>:#include<map> 并且和所有的关联式容器一样,map/multimap通常以平衡二叉树来完成 (2)namespace std{ template <class key, class T, class Compare = less<key>, class Allocator = allocator<pair<const key, T> > > class map

HDU 1800 Flying to the Mars 字典树,STL中的map ,哈希树

http://acm.hdu.edu.cn/showproblem.php?pid=1800 字典树 #include<iostream> #include<string.h> #include<stdio.h> using namespace std; struct node { int sum; node *next[10]; node() { sum=0; memset(next, NULL, sizeof(next)); }; }; int ans; char

C++ STL中Map的按Key排序和按Value排序

原文  http://blog.csdn.net/iicy266/article/details/11906189 map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择. 我们这样定义,map<string, int>,其中学生姓名用string类型,作为Key:该学生的成绩用int类型,作为value.这样一来,我们可以根据学