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倍