`
insertyou
  • 浏览: 901317 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

C++ primer 顺序容器

 
阅读更多

顺序容器:vector deque list

适配器:根据原始容器类型所提供的操作,通过定义新的操作接口,适应基础的容器类型。

容器元素初始化:

C<T> c; //默认构造函数

C<T>c(n);//n个值初始化,只适用于顺序容器,必须给出默认构造函数

C<T>c(n,t); //n个t 只适用于顺序容器,可以不给,但要给出 T(t)构造函数。

C<T>c(begin,end);//begin,end复制到c中

C<T> c1(c2);//c1和c2是相同的容器类型,存放相同类型元素,c2拷贝给c1

如果想要把不同容器的元素相互赋值,则可用第4个构造函数或用assign。

迭代器的行为像指针。

用作容器类型要遵循2个条件

1.能赋值运算。

2.能复制。

注意:引用类型不能复制和赋值。IO流也不支持复制。

vector deque随机存储

list 链表

注意迭代器失效问题。

difference_type 存储两个迭代器差值的有符号整型,可为负数

value_type 元素类型

reference 元素左值类型,value_type&

const_reference 元素常量左值类型,const value_type&

size_type 无符号整型

const_iterator

reverse_iterator

const_reverse_iterator

时刻更新迭代器,不然会出现迭代器失效问题。

insert都是插在iter的前面。

iterator insert(iter,n); //n插入iter前面,返回新元素的迭代器

void insert(iter,begin,end); //begin end插入iter前面。

void insert(iter,n,t); n个t插入iter前。

如果容器元素支持的比较符,可以让容器整体比较。

如 vector<int> c1,c2; c1==c2;

c.size()

c.max_size();

c.empty();

c.resize(n); //改变c的长度

c.resize(n,t);

reference c.back() ; //得到最后元素的引用

reference c.front(); //得到最前面元素的引用

c.at(n)==c[n];

c.clear();//清空

c.erase(iter); //返回iter后面的元素

c.erase(begin,end);//返回begin,end后面的元素

pop_front()和front()经常一起使用。

iterator find(begin,end,value);//找到value出现的第一个地方。

string 增加的构造函数:cp为空字符结尾的数组

1.string s(cp,n); //cp指向的数组的前n个元素。

2.string s(s2,pos2);//s2中从pos2开始复制给s

3.string s(s2,pos2,len);//s2中从pos2开始复制len个字符给s

string特有函数:

1.s.insert(pos,s2);//pos前插入string对象,,,pos为int

2.s.insert(pos,s2,pos,len);//pos前插入s2从pos开始的len长度

3.s.insert(pos,cp,len);//pos前插入cp的前len个字符

4.s.insert(pos,cp);//pos前插入cp

5.s.assign(s2); //s2赋值给s

6.s.assign(cp,len);//cp的len个字符给s

7.s.assign(cp);//cp赋给s

8.s.erase(pos,len);//删除从pos开始的len长

9.s.substr(pos,n);//返回一个string字符串,包含从pos开始的n个字符。

10.s.substr(pos);//返回string字符串,包含从pos开始的

11.s.substr();//返回s的副本

string中的append 和replace函数,返回s的引用

1.s.append(arg);//将arg插在s的后面。

2.s.replace(pos,len,args);//将args的元素替换 pos开始长为len的字符。

3.s.replace(b,e,args);//args的元素替换b,e 的所有字符

args可为:

1.s2

2.s2,pos,len

3.cp

4.cp,len

5.n,c

6.b2,e2; //迭代器

string提供的查找函数

1.s.find(args);

2.s.rfind(args);

3.s.find_first_of(args);//args中任意字符第一次出现的位置

4.s.find_last_of(args);

5.s.find_first_not_of(args);//查找第一个不属于args的字符

6.s.find_last_not_of(args);//最后一个不属于args的字符

args为:

1.c,pos //从pos开始,查找字符c,默认pos=0

2.s2,pos //pos开始查找string s2 pos默认为0

3.cp,pos //pos开始查找cp(cstring) pos默认为0

4.cp,pos,n //pos开始查找cp所指向的数组的前n个字符

string 的compare函数

1.s.compare(s2);

2.s.compare(pos1,n1,s2); //从pos1开始的n1个字符与s2做比较

3.s.compare(pos1,n1,s2,pos2,n2); //从pos1开始的n1个字符与s2从pos2开始的n2个字符比较

4.s.compare(cp) ;//与char* 比较

5.s.compare(pos1,n1,cp);//从pos1 开始的n1个字符与cp比较

6.s.compare(pos1,n1,cp,n2);//pos1开始的n1个字符与cp的前n2个字符比较。

适配器:容器适配器,迭代器适配器,函数适配器

默认

deque stack和queue

vector priority_queue

当然可以改变关联容器。

如stack<string,vector<string>>

stack的关联容器为顺序容器

queue的关联容器必须支持push_front();

priority_queue 的关联容器必须提供随机访问。

priority_queue设置优先级插入。

分享到:
评论

相关推荐

    《C++ Primer》学习笔记(27)顺序容器

    ### 《C++ Primer》学习笔记(27)顺序容器 #### 9.1 顺序容器概述 在C++中,顺序容器是一类用于存储数据的容器,其中元素的位置依赖于其添加到容器中的顺序。这与关联容器形成了对比,关联容器中的元素位置是由其...

    C++ Primer第四版【中文高清扫描版】.pdf

    8. 顺序容器和关联容器的使用,包括vector、list、map、set等容器类型的操作。 9. 泛型算法的使用,如只读算法、写容器元素的算法和对容器元素重新排序的算法。 10. 类的定义、构造函数、复制控制、重载操作符、继承...

    C++Primer(第4版)-课后习题答案.pdf

    9. 第九章顺序容器:讲解`std::vector`、`std::deque`、`std::list`等容器,它们的特性、操作和迭代器的使用。 10. 第十章关联容器:涵盖`std::set`、`std::map`、`std::multiset`、`std::multimap`等,它们基于...

    C++ primer 第五版配套资源 课后习题答案

    源代码部分是《C++ Primer 第五版》中的实例程序,这些代码涵盖了各种C++编程技巧,如面向对象编程、模板元编程、STL容器的使用等。读者可以通过阅读和运行这些代码,更好地领会C++的实际应用。对于初学者来说,这是...

    C++Primer中文版(第4版)完整版

    1. 容器:包括顺序容器(如vector、deque、list)和关联容器(如set、map),提供数据存储和操作的接口。 2. 迭代器:遍历容器元素的工具,类似于指针但更安全、功能更强大。 3. 队列与栈:queue和stack是基于容器的...

    C++Primer 第四版课后习题解答(第1~18章完整答案)完整版

    第九章“顺序容器”介绍了std::vector、std::deque和std::list,讲解了它们的特性、操作和迭代器的使用。习题解答会涉及容器的遍历、插入和删除操作。 第十章“关联容器”如std::set、std::map和std::multiset等,...

    C++ Primer中文版(第5版)李普曼 等著 pdf 1/3

    C++ Primer中文版(第5版)[203M]分3个压缩包 本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数...

    C++ primer 课后习题完整版

    C++标准库提供了多种容器,如顺序容器(vector、list等)和关联容器(set、map等),用于存储数据。容器类模板提供了迭代器支持,用于顺序访问容器中的元素。 泛型算法是独立于容器类型和元素类型的算法,可以应用...

    C++Primer第五版 第9章 顺序容器(练习解答)

    在C++编程中,顺序容器是一类非常重要的数据结构,它们按照元素的插入顺序来维护元素的排列。C++标准库提供了三种主要的顺序容器:`std::vector`、`std::deque`和`std::list`。在《C++ Primer》第五版的第9章中,...

    C++ 顺序容器

    此程序是c++ primer 中,第九章有关顺序容器的练习内容。程序为自己编写的模板,感兴趣的朋友可以下载然后自行修改,实现功能

    c++ primer笔记

    根据给定的信息,“c++ primer笔记”主要围绕经典著作《C++ Primer》展开,这是一本深受程序员喜爱的书籍,旨在帮助读者系统地学习和掌握C++编程语言的基础及高级特性。下面将从几个关键方面对C++的核心知识点进行...

    非常经典的c++ primer视频教程6-10

    本课程是C++ Primer初级教程,课程内容是学习C++语言基础知识,对应着教材的第1章到第8章。 第1章 快速入门 1.1 编写简单的C++程序 1.2 初窥输入/输出 1.2.1 标准输入与输出对象 1.2.2 一个使用IO库的程序 ...

    C++primer第四版清晰版电子书及全部答案.rar

    7. **STL**:标准模板库包括容器(如vector、list、set等)、迭代器、算法和函数对象,它们极大地提高了C++的效率和可读性。 8. **异常处理**:异常处理是C++中错误处理的一种机制,通过try、catch块捕获和处理运行...

    c++ primer_第五版_答案

    在使用《C++ Primer》第五版答案时,建议按照书中的章节顺序逐步学习,每完成一章的阅读和练习后,对照答案检查理解是否正确,同时尝试理解和分析解题思路,这将有助于深化对C++语言的理解和应用能力。在实践中不断...

    C++primer笔记

    - **数组**:数组是一种顺序容器,用于存储相同类型的多个元素。 - 初始化方式:可以直接初始化,例如`int arr[5] = {1, 2, 3, 4, 5};`。 #### 5. 动态内存分配与指针 - **内存分配**:C++支持两种内存分配方式...

    c++ primer 中文版 答案

    1. **C++基础**:这部分包括了C++的基本语法,如变量声明、数据类型(整型、浮点型、字符型等)、运算符(算术、比较、逻辑、位操作)以及基本的控制结构(顺序、选择、循环)。答案详细解释了如何正确使用这些元素...

    C++Primer习题答案

    第九章 顺序容器:讲解了vector、deque、list和forward_list四种顺序容器的特性和应用场景,以及如何对它们进行操作和遍历。 第十章 关联容器:介绍set、multiset、map和multimap等关联容器,它们通过键值对存储...

    C++ Primer学习笔记详解

    内容概要:这是关于《C++ Primer学习笔记》的文章,涵盖多种类型转换、异常机制、类静态成员、IO库介绍、顺序容器操作、泛型算法应用、关联容器概念与使用详解、动态内存智能指针管理、构造函数与拷贝构造细节探讨、...

    C++ Primer Plus第五版编程题答案

    《C++ Primer Plus第五版编程题答案》是一个针对C++初学者和进阶者的重要参考资料,它涵盖了C++ Primer Plus这本书中的所有编程练习题的解答。C++ Primer Plus是C++语言学习的经典书籍之一,作者Stephen Prata通过...

Global site tag (gtag.js) - Google Analytics