正在看c++ primer,感觉书上有个错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正在看c++ primer,感觉书上有个错误相关的知识,希望对你有一定的参考价值。

题目:
读取容器中的每个元素,然后在原始元素的后面插入一个新元素。我们希望该循环能处理每个原始元素。然后使用insert函数插入新元素,并返回刚插入元素的迭代器。每次插入完成后,使迭代器+1,定位在下一个要插入的原始元素。

参考技术A STL 使用的半开半闭区间表示方式
end迭代器并不能表示一个元素 ,它什么都没有

end-1 才是最后一个元素

例如 1 ,2 ,3 ,4
begin表示1 end-1表示4 end表示4后面那个空位
参考技术B iterator insert(iterator where, value_type val);

The first member function inserts an element with value val and returns an iterator that designates the newly inserted element. You use it to insert a single element before a place designated by an iterator.

Each of the member functions inserts, before the element pointed to by where in the controlled sequence, a sequence specified by the remaining operands.

我觉得会造成死循环
因为插入的元素在where前面,再自增,又回到刚刚的元素位置本回答被提问者采纳
参考技术C 因为vector里的元素在插入时要保持元素的有序性,当插入一个元素时迭代器是会变的。 所以插入元素后,为了使访问不会出错,重新把迭代器对应起来是必要的。不知道你认为哪里有错误

看完《C++ primer》后,我都收获了什么?

文章目录


    • 1 - 语言只是一个工具

    • 2 - 光学会一门语言还不够

    • 3 - 结语


迫于读研和未来就业的压力,我研一上自学了C++的这门语言,自我感觉比较认真的看完了《C++ primer》这本书的大部分章节,算是系统性的过了一遍C++这门语言。期间,结合自己本科时学习汇编和C语言的经历,我想谈一谈我对学习编程的一些想法,希望能够对屏幕前的你有一些启发

1 - 语言只是一个工具

无论是计算机科班生,或者是非科班生,在最开始接触编程的时候,脑海里总是会思考我应该学习什么语言好。我当初也是有过这样一段经历:

大一工科选修了一门C语言,上课完全听不懂老师在讲什么,期末考试前花了一周多时间对付了考试,算是蒙混过关,至此算是和C语言结下了梁子,什么二维数组啊,指针啊,文件读取,结构体等等,一概把我欺负得死死的。

大三的时候又开始不务正业的玩上了arduino,学习arduino的时候,是跟着一些网上的资源做的,但是碰上一些比较复杂的程序,我一是不明白别人的程序组成,二是不明白开发板背后的基本原理。因此又跑去学了一段时间的51单片机,学习单片机的过程还是挺有趣的。那时我在MOOC上跟着北京交通大学的一个老师学,他用的是汇编语言,于是乎我也是跟着用汇编语言。在使用汇编语言编写单片机代码的时候,对代码的理解更加深刻了,虽然已经好几年没有碰过单片机了,但是那些指令:MOV AX, LOOP AGAIN等至今还是历历在目。

 本科期间对编程的不痛不痒式学习,导致我并没有在计算机方面有更深的了解以及掌握。相反,折腾来折腾去,我始终没能入得了编程这个门,还处于纠结学习什么语言更好的一个层面上

而现在,我读了传统工科的硕士,这学期有一门课叫做《计算方法》,该课程有一个上机报告,需要学生用习惯的编程语言完成实验报告。我硕士最开始想做“机器视觉”<没选好导师,我估计大概率不会做这个方向了>,我进校后就开始了自己的C++自学之路。首先是在B站上观看了黑马的C++视频,看了一段时间后买了书《C++ primer》。书看了前四章,我为了检验自己的C++学习水平,就开始尝试着使用C++进行上机报告程序的编写。我记得很清楚,第一个题的程序我花了很多的时间,从给函数传递数组作形参、到使用vector取代数组、再到计算数据量太大,在堆区new了一个二维数组。然而,不得不说,当人有了一个具体的目标,学习速度真的会更快一些。在之后,由于后面的题目涉及到f ( x ) f(x)f(x)曲线图形的绘制,我又自己去搜索如何让C++像Python的一样绘图,尝试了easyx,pltplot等插件都不太好使后,我开始思考:是否应该使用Python进行程序的编写?

 不要再纠结语言选择了。哪一门语言更加适合你目前的工作要求或者使用起来更加顺手,就使用哪一种的语言

于是乎,为了让我的实验报告更加好看,我又在我的电脑装上Python,重新用Python编译整个程序。因为有了C++的基础,我花了不到一天,我就编写好了一个Python程序,能够解决我所需要解决的问题。也正是从那个时候开始,我自己切身体会到了语言只是一门工具,哪个工具更合适。

2 - 光学会一门语言还不够

如果你对计算机方面有更多的追求,希望自己能够使用编程技术帮助自己在校期间赢得一些比赛、或者通过编程做一些有意思的东西以及通过编程技术在IT公司找到一份高薪工作。那么,仅仅掌握一门语言,是远不能够完成上面的目标的。

就拿我举个例子吧,我现在跟了一个方向不喜欢的导师,不打算毕业从事硕士期间的研究方向的相关工作,我自己计划自学编程,跨行去互联网企业谋一份高薪工作,在我看完《C++ primer》后,我下一步的学习计划如下:

  • 数据结构与算法

    • 数据结构和算法是计算机学科中非常重要的一门课程,俗称编程四大件之一,也是一个优秀程序员的必修素养之一。如果你们希望未来能够利用计算机做更多更厉害的东西,数据结构和算法是绕不开的。

  • 计算机系统原理相关知识

  • 计算机网络相关内容

如果你希望在C++上掌握的更加精通,那么在《C++ primer》的基础上,还需要继续阅读《Effective C++》,《STL 源码剖析》、《more Effective C++》等书籍。毕竟,C++作为一门最为复杂的语言之一,想要“熟练”掌握,不多读几本书,多写写代码是不可能做到的。

3 - 结语

好了,以上就是我本人在看完《C++ primer》后一些收获和感悟,希望能够帮助到阅读我文章的你。如果你对文中某些内容有什么不解或者文中有什么讲得不对,欢迎在下面进行评论哦!

来源:

https://blog.csdn.net/qq_42518941/article/details/113196014

【end】

更多资讯,扫码关注


以上是关于正在看c++ primer,感觉书上有个错误的主要内容,如果未能解决你的问题,请参考以下文章

C++ Primer 第五版 部分课后题答案

如何学习C++编程

正式学习C++的时候,我没有用Primer系列

C++ Primer笔记5---chapter5易错点

C++ Primer Plus学习:第五章

重学《C++ Primer》#3