C++ Primer Chapter 9-3
来源:互联网 发布:安卓备份软件 编辑:程序博客网 时间:2024/06/05 09:46
1:任何涉及到改变容器中元素个数的操作都会使得迭代器失效,所以在循环中如果有这些操作,那么迭代器一定要在每次循环之前重新获取。practice 9.3.3 的 9.26
2:前向链表由于结构特殊只存在一些特殊的操作函数,结尾带after的函数,只可以在指定元素的后面删除、插入,而不像其他的容器都是在指定元素之前插入。还可以返回一个在首迭代器之前的迭代器,叫首前迭代器
3:正是由于 forward_list 的删除和插入函数的特殊情况,我们对 forward_list 中某个元素的删除或插入必须要知道他的前一个元素的迭代器,前驱迭代器。
4: 容器中insert函数,返回值是一个指向最后插入容器中的元素的迭代器,
比如除了forward_list的容器都是向前插入,那么返回值是这一系列插入值中排在容器中最前面的元素的迭代器。
forward_list 在容器中都是向后插入,那么返回值是这一系列插入值中排在容器中最后面的元素的迭代器。
都是时间上最后插入的元素的迭代器
5: 向空的 forward_list 用 insert_after 函数 第一次插入元素时,要注意不能用首迭代器,因为它和尾迭代器相同,插入尾后是没有定义的操作,只能用首前迭代器,同时注意 erase_after 函数擦除不在 forward_list 内存中的元素也是未定义操作,所以不能擦除尾部元素之后的内存,更不能删除尾后迭代器所指位置后面的元素。超出容器的内存范围。
6:容器中的 erase 函数删除两个迭代器之间的元素时(
lst.erase(iter1,iter2);
),只删除 iter1(包含) 和 iter2 (不包含)之间的元素,即为左闭合区间,但是对于earse_after 函数
flst.erase_after(iter1,iter2);
iter1 和 iter2 都不包含。为双开区间 ,
两个函数的返回值其实都是 iter2
7:只要元素在内存中的位置改变了,那么迭代器就会失效,否则不会失效。(迭代器按指针意思理解)
8:再循环中改变了容器,那么千万不要缓存end 返回值。因为一旦操作增删,尾后迭代器就会失效。
9:容器中的元素个数和内存空间是两回事,vector string deque 容器一般会分配比元素多的内存空间。
10:string 的构造函数有两个版本,一个时接收char 数组的参数,第二个是接收 string 类型的。
string ( char * cp ,int len);//
从 数组 cp 的开头开始拷贝len个值构造一个 string 对象string (string s ,int n,int len)// 从 s 的下标 n 开始拷贝len个值构造
一个 string 对象,如果没有le//n 则一直拷贝到结尾
详见 page 321
11:substr 可以获取一个 string 的子字符串,
subsrt(int pos,int len)// 获取string 对象从pos开始的长度为 len 的子字符串,返回一个 string 对象
12: replace 函数
replace(int index, int len, string s)//在string 对象中 index 下标开始删除 len 个字符,然后插入s 或者
replace ( range, string s),range其实是两个参数,一对迭代器
13: 一般告知函数一个范围有两种方法:1)告诉起始位置和终止位置,2)告诉起始位置和跨度
14: String 其实是一个char 的容器,所以insert 函数不可以带一个string对象,就像vector中不能插入vector
0 0
- C++ Primer Chapter 9-3
- C++Primer-Function chapter
- C primer plus -- Chapter 2
- C++ Primer Chapter 3
- C++ Primer Plus (Chapter 9)
- Chapter 9<C++ Primer Plus>
- C++ Primer Chapter 9-1
- C++ Primer Chapter 9-2
- C++ Primer Chapter 9-4
- C++ Primer Chapter 7-3
- C++ Primer Chapter 10-3
- C++ Primer Chapter 11-3
- C++ Primer Chapter 12-3
- C++ Primer Chapter 13-3
- C++ Primer Chapter 14-3
- C++ Primer Chapter 15-3
- c primer plus Chapter 14 p383
- 《C primer plus》笔记--Chapter 1
- BroadCast广播机制
- smartsvn9破解及license文件
- RISC-V
- javaScript中的prototype与_proto_
- 前后端分离的想法
- C++ Primer Chapter 9-3
- mjpg streamer(OpenWRT)
- 系统的简单注解
- 双向链表的c++实现
- JAVA多线程—Lock&Condition实现线程同步通信
- android网络请求失败原因
- soa面向服务--案例(中)
- java webservice 天气服务接口
- python 机器学习算法实现 深度学习笔记