9.27
int main() { forward_list<int > flist= {1,2,3,4,5,6,7,8,9}; forward_list<int >::iterator it_after = flist.before_begin(); forward_list<int >::iterator it = flist.begin(); while (it != flist.end()) { if(*it%2){ it = flist.erase_after(it_after); }else{ ++it_after; ++it; } } for(auto showVa : flist){ cout<<showVa << endl; } for (;;); return 0; }
9.28
void insertForwardList(forward_list<string >& fstr, const string& str_0, const string& str_1){ forward_list<string >::iterator it_after = fstr.before_begin(); forward_list<string >::iterator it = fstr.begin(); while (it != fstr.end()) { if(*it == str_0){ fstr.insert_after(it, str_1); return; } it++; it_after++; } fstr.insert_after(it_after, str_1); }
9.29
vec尾部插入75个初始元素
删除尾部的90个元素
9.30
元素要有默认构造函数,或者需要给定一个初始变量,否则无法通过编译并且报错
9.31
list和forward_list没有定义一次跳过多个迭代器的+=操作
int main() { list<int > list = {0,1,2,3,4,5,6,7,8,9}; auto iter = list.begin(); while(iter != list.end()){ if(*iter %2){ iter = list.insert(iter,*iter); iter++; iter++; }else{ iter = list.erase(iter); } } for (;;); return 0; }
9.32
不合法,当前操作插入的是迭代器所指的数再加一的值,与原程序需求不符
9.33
在第一次插入后,iter会失效,再次插入时候会报错
9.34
在遇到第一个奇数时候,插入当前奇数,但是后续指跳过一个迭代器,所以会一直循环在第一个奇数出现的地方插入奇数
9.35
capacity 为 当前预分配的最大的数量
size为当前元素的数量
9.36
capacity 永远大于等于size的数量
9.37
因为list和array不是分配在连续的内存中,是分散存储的,需要添加元素再进行内存分配指定
9.38:略
9.39
预分配1024个大小的vec,随用户输入元素,输入完成后将vector当前大小重新分配成输入数量的1.5倍