C++ Primer (第四版)课后习题9.26 删除容器元素

习题9.26:假设有如下ia的定义,将ia复制到一个vector容器和一个list容器中。使用单个迭代器参数版本的erase函数将list容器的奇数值

     元素删除掉,然后将vector容器中的偶数值删除掉。

代码:

#include <iostream>
#include <vector>
#include <list>
#include <string>
using namespace std;

int main(int argc, char **argv)
{
	int ia[] = {0,1,1,2,3,5,8,13,21,55,89};
	vector<int> ivec(ia, ia+11);
	for (vector<int>::iterator iter = ivec.begin(); iter!=ivec.end();)
	{
		if (*iter%2 == 0)
		{
			iter = ivec.erase(iter);
		}else
		{
			iter++;
		}
	}
	list<int> ilst(ia, ia+11);
	for (list<int>::iterator iter=ilst.begin(); iter!=ilst.end();)
	{
		if (*iter%2 == 0)
		{
			iter++;
		}else
		{
			iter = ilst.erase(iter);
		}
	}
	return 0;
}

总结: (1)在定义vector变量的同时可以使用数组进行初始化;

    (2)vector容器使用erase函数删除元素之后,返回下一个元素的迭代器。当使用insert或者erase函数时为避免迭代器失效,

      建议获取insert、erase的返回值作为新的迭代器。

时间: 2024-08-15 16:55:40

C++ Primer (第四版)课后习题9.26 删除容器元素的相关文章

计算机组成原理_第四版课后习题答案(完整版)

计算机组成原理_第四版课后习题答案(完整版) ?第一章 1.?比较数字计算机和模拟计算机的特点. 解:模拟计算机的特点:数值由连续量来表示,运算过程是连续的: 数字计算机的特点:数值由数字量(离散量)来表示,运算按位进行. 两者主要区别见P1?表1.1. 2.?数字计算机如何分类?分类的依据是什么? 解:分类: 数字计算机分为专用计算机和通用计算机.通用计算机又分为巨型机.大型机. 中型机.小型机.微型机和单片机六类. 分类依据:专用和通用是根据计算机的效率.速度.价格.运行的经济性和适应性来划

数学物理方法 高教 第四版 课后习题答案

数学物理方法 高等教育出版社 第四版 课后习题答案 课后习题答案下载地址 链接:https://pan.baidu.com/s/1KqePoJ8AXb4vAxXadOCfCg提取码:73um 如果链接失效扫一扫右侧,回复 数学物理方法答案 即可免费获取 百度文库所有文档原格式下载方法  回复 文库免费下载 数学物理方法 高教 第四版 课后习题答案 更多相关: 高等数学同济七版上册课后答案:https://www.cnblogs.com/need/p/11491277.html 高等数学同济七版下

C++ Primer 第四版课后练习解答 习题1.1

注意:本随笔是在<C++Primer(第四版)习题解答(完整版)>中直接抄录的.此处主要是便于本人以后反复阅读. 习题1.1 查看所用的编译器文档,了解它所用的文件命名规范.编译并运行本节的main程序. [解答] 一般而言,C++编译器要求编译的程序保存在文件中.C++程序一般涉及两类文件:头文件和源文件.大多数系统中,文件的名字由文件名和文件后缀(又称扩展名)组成.文件后缀通常表明文件的类型,如头文件的后缀可以是.h或.hpp等:源文件和后缀可以是.cc或.cpp等,具体的后缀与使用的编译

C++ Primer 第四版课后练习解答 习题1.13

注意:本随笔是直接参考<C++Primer(第四版)习题解答(完整版)>中的.此处主要是便于本人以后反复阅读. 习题1.13 编译器不同,理解其诊断内容的难易程度也不同.编写一些程序,包含本小节"再谈编译"部分讨论的那些常见错误.研究编译器产生的信息,这样你在编译更复杂的程序遇到这些信息时不会陌生. [解答] 对于程序中出现的错误,编译器通常会给出简略的提示信息,包括错误出现的文件及代码行.错误代码.错误性质的描述.如果要获得关于错误的详细信息,一般可以根据编译器给出的错误

C++ Primer 第四版课后练习解答 习题1.2

注意:本随笔是在<C++Primer(第四版)习题解答(完整版)>中直接抄录的.此处主要是便于本人以后反复阅读. 习题1.2 修改程序使其返回-1.返回值-1通常作为程序运行失败的指示器.然而,系统不同,如何(甚至是否)报告main函数运行失败也不同.重新编译并再次运行程序,看看你的系统如何处理main函数的运行失败指示器. [解答]笔者所使用的Windows操作系统并不报告main函数的运行失败,因此,程序返回-1或返回0运行效果上没有什么区别.但是,如果在DOS命令提示符方式下运行程序,然

C++ Primer 第四版课后练习解答 习题1.3

注意:本随笔是在<C++Primer(第四版)习题解答(完整版)>中直接抄录的.此处主要是便于本人以后反复阅读. 习题1.3 编一个程序,在标准输出上打印"Hello,World". [解答] 1 #include <iostream> 2 3 int main() 4 { 5 std::cout << "Hello,World" << std::endl; 6 return 0; 7 } 本人代码示例: 1 #inc

C++ Primer 第四版课后练习解答 习题1.19

注意:本随笔是直接参考<C++Primer(第四版)习题解答(完整版)>中的.此处主要是便于本人以后反复阅读. 习题1.19 如果上题给定的数1000和2000,程序将产生什么结果?修改程序,使每一行输出不超过10个数. [解答] 1 int main() 2 { 3 int v1, v2, low,up; 4 cout << "Enter tow numbers " << endl; 5 cin >> v1 >> v2; 6

C++ Primer 第四版课后练习解答 习题1.8

注意:本随笔是在<C++Primer(第四版)习题解答(完整版)>中直接抄录的.此处主要是便于本人以后反复阅读. 习题1.8 指出下列输出语句那些(如果有)是合法的. std::cout << "/*"; std::cout << "*/"; std::cout << /* "*/" */; 预测结果,然后编译包含上述三条语句的程序,检查你的答案.纠正所遇到的错误. [解答] 第一条和第二条语句合法

C++ Primer 第四版课后练习解答 习题1.11

注意:本随笔是直接参考<C++Primer(第四版)习题解答(完整版)>中的.此处主要是便于本人以后反复阅读. 习题1.11 用while 循环编程,输出10 到0递减的自然数.然后用for 循环重写该程序. [解答] 用while循环编写的程序: 1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 int i = 10; 7 while (i >= 0) 8 { 9 cout <<