C++primer笔记之顺序容器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 最近又重新拾起C++primer,发现每一次看都会有不同的体验,但每一次看后因为不常用,忘记得很快,所以记笔记是很关键的一环,咋一看是浪费时间,实际上是节省了很多时间。下面就把这一节的内容做一个简单的提炼和小节: 1、IO库类型不支持复制或赋值,因此,不能创建存放IO类型对象的容器。

最近又重新拾起C++primer,发现每一次看都会有不同的体验,但每一次看后因为不常用,忘记得很快,所以记笔记是很关键的一环,咋一看是浪费时间,实际上是节省了很多时间。下面就把这一节的内容做一个简单的提炼和小节:

1、IO库类型不支持复制或赋值,因此,不能创建存放IO类型对象的容器。

2、在指定容器元素为容器类型时,必须如下使用空格:

vector< vector<string> > lines; //OK!

vector< vector<string>> lines;//ERROR! 像这样,系统会默认>>为单个符号

3、list容器的迭代器既不支持算术运算(加法或减法),也不支持关系运算(<=, <,>等),只提供前置和后置的自增、自减及相等(不等)运算。

vector<int>::iterator it = vec.begin() + vec.size()/2; //OK!而

list<int>::iterator it = lst.begin() + lst.size()/2; //ERROR!

4、悬垂指针

由悬垂指针可以引出野指针,垃圾内存以及内存黑洞等相关概念,我们一点点来看:

悬垂指针:当所指向的对象被释放或者收回,但是对该指针没有做任何修改,以至于该指针仍旧指向已经回收的内存地址,此情况下该指针便称为悬垂指针(也称迷途指针)。

一般以如下形式(C++)可以避免悬垂指针:

delete cp;

cp = NULL; //此处一定要记得!

野指针:其产生是由于某些指针在首次使用之前没有进行必要的初始化,这类指针就称为野指针。

垃圾内存:针对于某个指针来说,常常指不合法的内存,某些内存free或delete后没有将其设置为NULL,这样的内存就是垃圾内存。

内存“黑洞”:和上面三个完全不同的概念,特指对一个指针施加free或delete前就把这个指针设置为NULL,这样之后,这块内存并不属于编译器,它只属于某个变量的合法访问区域,但这个访问的指针已经不存在了,这样这块内存就像一个洞一样,曰为“黑洞”。

5、push_front()和pop_front()只适用于list和deque容器

    v[n]和c.at[n]只适用于vector和deque容器

6、不要存储end操作返回的迭代器,添加或删除deque或vector容器内的元素都会导致存储的迭代器失效。

7、如果在不同(或相同)类型的容器内,元素类型不同但相互兼容,则其赋值运算必须适用assign函数,如:可通过assign操作实现将vector容器中一段char*类型的元素赋给string类型的list容器。

8、默认基础容器类型

默认的stack和queue都基于deque容器实现,而priority_queue则在vector容器上实现。

 

目录
相关文章
|
27天前
|
存储 设计模式 C++
【C++】优先级队列(容器适配器)
本文介绍了C++ STL中的线性容器及其适配器,包括栈、队列和优先队列的设计与实现。详细解析了`deque`的特点和存储结构,以及如何利用`deque`实现栈、队列和优先队列。通过自定义命名空间和类模板,展示了如何模拟实现这些容器适配器,重点讲解了优先队列的内部机制,如堆的构建与维护方法。
33 0
|
2月前
|
存储 搜索推荐 C++
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
59 2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
|
2月前
|
存储 C++ 容器
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器1
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
65 5
|
2月前
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
73 2
|
2月前
|
设计模式 存储 C++
【C++】C++ STL探索:容器适配器 Stack 与 Queue 的使用及模拟实现(二)
【C++】C++ STL探索:容器适配器 Stack 与 Queue 的使用及模拟实现
|
2月前
|
存储 C++ 容器
【C++】C++ STL探索:容器适配器 Stack 与 Queue 的使用及模拟实现(一)
【C++】C++ STL探索:容器适配器 Stack 与 Queue 的使用及模拟实现
|
4月前
|
C++ 容器
【C/C++笔记】迭代器
【C/C++笔记】迭代器
29 1
|
4月前
|
存储 安全 程序员
【C/C++笔记】迭代器范围
【C/C++笔记】迭代器范围
73 0
|
4月前
|
安全 编译器 容器
C++STL容器和智能指针
C++STL容器和智能指针
|
4月前
|
C++ 容器
C++中自定义结构体或类作为关联容器的键
C++中自定义结构体或类作为关联容器的键
49 0