顺序容器: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)顺序容器 #### 9.1 顺序容器概述 在C++中,顺序容器是一类用于存储数据的容器,其中元素的位置依赖于其添加到容器中的顺序。这与关联容器形成了对比,关联容器中的元素位置是由其...
8. 顺序容器和关联容器的使用,包括vector、list、map、set等容器类型的操作。 9. 泛型算法的使用,如只读算法、写容器元素的算法和对容器元素重新排序的算法。 10. 类的定义、构造函数、复制控制、重载操作符、继承...
9. 第九章顺序容器:讲解`std::vector`、`std::deque`、`std::list`等容器,它们的特性、操作和迭代器的使用。 10. 第十章关联容器:涵盖`std::set`、`std::map`、`std::multiset`、`std::multimap`等,它们基于...
源代码部分是《C++ Primer 第五版》中的实例程序,这些代码涵盖了各种C++编程技巧,如面向对象编程、模板元编程、STL容器的使用等。读者可以通过阅读和运行这些代码,更好地领会C++的实际应用。对于初学者来说,这是...
1. 容器:包括顺序容器(如vector、deque、list)和关联容器(如set、map),提供数据存储和操作的接口。 2. 迭代器:遍历容器元素的工具,类似于指针但更安全、功能更强大。 3. 队列与栈:queue和stack是基于容器的...
第九章“顺序容器”介绍了std::vector、std::deque和std::list,讲解了它们的特性、操作和迭代器的使用。习题解答会涉及容器的遍历、插入和删除操作。 第十章“关联容器”如std::set、std::map和std::multiset等,...
C++ Primer中文版(第5版)[203M]分3个压缩包 本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数...
C++标准库提供了多种容器,如顺序容器(vector、list等)和关联容器(set、map等),用于存储数据。容器类模板提供了迭代器支持,用于顺序访问容器中的元素。 泛型算法是独立于容器类型和元素类型的算法,可以应用...
在C++编程中,顺序容器是一类非常重要的数据结构,它们按照元素的插入顺序来维护元素的排列。C++标准库提供了三种主要的顺序容器:`std::vector`、`std::deque`和`std::list`。在《C++ Primer》第五版的第9章中,...
此程序是c++ primer 中,第九章有关顺序容器的练习内容。程序为自己编写的模板,感兴趣的朋友可以下载然后自行修改,实现功能
根据给定的信息,“c++ primer笔记”主要围绕经典著作《C++ Primer》展开,这是一本深受程序员喜爱的书籍,旨在帮助读者系统地学习和掌握C++编程语言的基础及高级特性。下面将从几个关键方面对C++的核心知识点进行...
本课程是C++ Primer初级教程,课程内容是学习C++语言基础知识,对应着教材的第1章到第8章。 第1章 快速入门 1.1 编写简单的C++程序 1.2 初窥输入/输出 1.2.1 标准输入与输出对象 1.2.2 一个使用IO库的程序 ...
7. **STL**:标准模板库包括容器(如vector、list、set等)、迭代器、算法和函数对象,它们极大地提高了C++的效率和可读性。 8. **异常处理**:异常处理是C++中错误处理的一种机制,通过try、catch块捕获和处理运行...
在使用《C++ Primer》第五版答案时,建议按照书中的章节顺序逐步学习,每完成一章的阅读和练习后,对照答案检查理解是否正确,同时尝试理解和分析解题思路,这将有助于深化对C++语言的理解和应用能力。在实践中不断...
- **数组**:数组是一种顺序容器,用于存储相同类型的多个元素。 - 初始化方式:可以直接初始化,例如`int arr[5] = {1, 2, 3, 4, 5};`。 #### 5. 动态内存分配与指针 - **内存分配**:C++支持两种内存分配方式...
1. **C++基础**:这部分包括了C++的基本语法,如变量声明、数据类型(整型、浮点型、字符型等)、运算符(算术、比较、逻辑、位操作)以及基本的控制结构(顺序、选择、循环)。答案详细解释了如何正确使用这些元素...
第九章 顺序容器:讲解了vector、deque、list和forward_list四种顺序容器的特性和应用场景,以及如何对它们进行操作和遍历。 第十章 关联容器:介绍set、multiset、map和multimap等关联容器,它们通过键值对存储...
内容概要:这是关于《C++ Primer学习笔记》的文章,涵盖多种类型转换、异常机制、类静态成员、IO库介绍、顺序容器操作、泛型算法应用、关联容器概念与使用详解、动态内存智能指针管理、构造函数与拷贝构造细节探讨、...
《C++ Primer Plus第五版编程题答案》是一个针对C++初学者和进阶者的重要参考资料,它涵盖了C++ Primer Plus这本书中的所有编程练习题的解答。C++ Primer Plus是C++语言学习的经典书籍之一,作者Stephen Prata通过...