`
strong_fee
  • 浏览: 178761 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

STL容器(二)(附件Effective.STL)

阅读更多

上:STL容器(1)

     联合容器(对容器概念的另一个改造,将值与关键字关联在一起)

1   set(set,set.h)可反转,可排序,关键字是唯一的,只能存储同一类型的值。

用法如:

1)      set<string> a;   

2)      set<string, less<string>> b;                 第二个参数用于指示用来对关键字进行排序的比较函数或对象,默认使用less<>模板。

3)      set<string> A(s1,s1+3);     s1string数组                 即将一个迭代区间作为参数的构造函数,区间的最后一个元素是超尾符,关键字是唯一的且被排序。

常用方法:

1)      显示集合A和结合B的并集:                   
              set_uniton(A.begin(),A.end(),B.begin(),B.end(),ostream_iterator<string, char> out(cout,” ”))

2)      联合集合将关键字看作是常量,故C.begin()返回的是一个固定迭代器。set_union()将覆盖容器中的已有数据,并要求容器有足够的空间来容纳新信息。

3)      将两个区间复制到一个新的容器集合:

set_union(A.begin(),  A.end, B.begin(), B.end(), insert_iterator<set<string>>(C, C.begin()))

将复制转化为插入。

set_intersection()set_difference()查找交集和获得两个交集的差,接口与set_union()相同。

 4)   lower_bound()将关键字作为参数并返回一个迭代器,该迭代器指向第一个不小于关键字集合的成员,同理upper_bound()返回的迭代器指向集合中第一个大于关键字参数的成员。

2   multiset(set,multiset.h)

                   可能有多个值得关键字相同。

3   map(map,map.h)

         用法如:

                   map<string, int> wordmap;

                   set<string>::iterator si;

                   set<string> wordset;

                   for(si=wordset.begin(); si!=wordset.end(); si++)

                            wordmap.insert(pair<string, int>(*si, count(words.begin(), words.end(), *si)));

                            //wordmap[*si]=count(words.begin(), words.end, * si);

4   multimap(map,multimap.h , 可反转的,经过排序的联合器)一个关键字可以与多个值相关联。

         关键字的类型与值类型不同,特定的关键字可与多个值相关联。

         1)      使用方法:

                   multimap<int, string> codes;//第一个参数为关键字的类型,第二个单数为所存储值得类型。可选的第三个参数用于指出对关键字进行排序的比较函数或对象。默认使用less<>模板,将关键字类型作为参数。

         2)      点对为将信息结合在一起,可将关键字类型与数据类型结合为一对,方法为使用STLpair<Class T, Class U>模板将两种对象结合到一个对象中,值类型为pair<const keytype, datatype>

使用方法:

pair<const int, string> item(213, “Los Angeles”);

codes.insert(item);    或者

codes.insert(pair<const int, string> (123, “Los Angeles”));

           使用firstsecond来分别访问pair对象的两个部分,用法如:
  
cout<<item.first<<” ”<<item.second<<endl.

 3)    基本成员方法:

count()用关键字作参数,返回具有该关键字的元素的数目。

lower_bound()upper_bound()将关键字作为对象,工作方式与set相同。

                  equal_range() 用关键字作参数,返回与该关键字匹配的区间的迭代器,返回的两个值封装在一个pair对象中,此时连个模板参数是迭代其类型。用法如:

pair<multimap<KeyType, string>::iterator,

multimap<KeyType, string>::iterator> range=codes.equal_range(718).

for(it=range.first; it!=range.second; ++it){

         cout<<(*it).second<<endl;

}

 

         继续学习:http://www.stlchina.org/twiki/bin/view.pl/Main/STLLearnResouce

学习博客masterlee:  http://blog.csdn.net/masterlee/

C++ Primer Plus

分享到:
评论

相关推荐

    STL容器选择流程图.JPG

    STL容器选择流程图.JPG

    c++ effective c++ Effective.STL.pdf More+Effective+Chinese.pdf

    标题中的"C++ Effective C++ Effective.STL.pdf More+Effective+Chinese.pdf"暗示了这是一组关于C++编程语言深入实践的资源,其中包含了经典书籍《Effective C++》、《More Effective C++》以及《Effective STL》的...

    Addison.Wesley.Effective.STL.Jun.2001.rar

    《Effective STL》是由著名C++专家Scott Meyers撰写的一本经典书籍,由Addison-Wesley出版,于2001年6月发行。这本书深入探讨了标准模板库(STL)的高效使用方法,旨在帮助程序员充分利用STL的强大功能,同时避免...

    c++STL容器适配器习题答案.docx

    STL的容器适配器是其中的一种特殊类型,它们是基于现有容器进行抽象和封装,以满足特定的数据操作需求。 1. **STL的组成部分**: - **容器**:容器是STL的基础,它们用于存储和管理数据,如向量、列表、集合、映射...

    算法笔记-2、STL容器的学习使用.zip

    用于初步学习STL容器方便后续的算法学习, 来源于《算法笔记》, 适用于初学者,强力推荐这本书, 非常简单的把C、C++的STL、基础数据结构的实现、查找算法、排序算法、二分思想、贪心思想的起源思想

    stl-查看调试工具.zip

    在C++编程中,STL(Standard Template Library,标准模板库)是不可或缺的一部分,它包含了许多容器类,如map和vector,以及算法和迭代器等工具。这些容器帮助程序员高效地管理和操作数据。然而,当涉及到复杂的程序...

    Effective.STL中文

    **STL(Standard Template Library,标准模板库)**是C++编程语言中不可或缺的一部分,它为程序员提供了高效、灵活和可重用的容器、算法和迭代器等工具。`Effective STL`这本书则深入探讨了如何有效地使用这些工具,...

    Effective.STL.pdf

    Effective.STL.pdf

    effective stl中文版下载pdf.pdf

    #### 二、STL的挑战与机遇 - **早期挑战**: - 编译器支持不一致:早期版本的编译器对模板的支持参差不齐,导致STL在不同平台上的表现差异较大。 - 文档不足:高质量的STL教程和参考资料稀缺,增加了学习难度。 ...

    STL_doc...

    C++STL........................

    Effective STL中文版.pdf 带目录书签 清晰版

    《Effective STL》是由著名软件设计专家Scott Meyers所著的一本关于Standard Template Library(STL)的实用指南,中文版的发布使得更多的中国读者能够深入理解并熟练运用STL。这本书是C++程序员的必备参考书籍,...

    重新上传的Effective.STL中文.CHM

    《Effective STL》是由著名C++专家Scott Meyers所著的一本经典编程指南,它深入剖析了标准模板库(STL)的使用技巧和最佳实践。这本书对于任何想要提高C++编程效率,尤其是与STL相关的开发者来说,都是一份极其宝贵...

    Effective.STL.zh-cn

    虽然《Effective STL》主要讨论的是STL的原始版本,但现代C++(C++11及以后)引入了智能指针,如unique_ptr、shared_ptr和weak_ptr,它们在管理动态内存方面提供了更加安全和自动化的解决方案,与STL容器结合使用时...

    c++/STL容器设计相关

    二、STL主要容器类型 1. 向量(vector):动态数组,提供随机访问和快速插入、删除(尾部)操作。 2. 列表(list):双向链表,支持快速的插入和删除,但随机访问效率较低。 3. 集合(set)和映射(map):自平衡...

    STL Tutorial and Reference Guide.pdf

    #### 二、STL基础知识 1. **容器(Container)** - **概述**:容器是用于存储数据的数据结构。 - **分类**: - **序列容器**:如`vector`, `deque`, `list`等,提供线性存储方式。 - **关联容器**:如`set`, `map`...

    STL_Programmer_Guide.rar

    STL包含四大核心组件:容器(Containers)、迭代器(Iterators)、算法(Algorithms)和函数对象(Function Objects)。 1. 容器:容器是存储数据的结构,如vector(动态数组)、list(双向链表)、set(红黑树实现...

    STL容器.emmx

    STL容器,用思维导图的方式表达了一下,其中一些所有容器都通用的函数没有列举如a.size(),a.capacity()等。。希望对各位有帮助.

    基于stl共享内存,可以像使用STL容器一样使用共享内存

    在标题和描述中提到的"基于stl共享内存,可以像使用STL容器一样使用共享内存",指的是通过设计一个自定义的内存分配器(Allocator),使得STL容器如vector、list、map等能够在共享内存上进行操作。这种方式的优势...

Global site tag (gtag.js) - Google Analytics