1. 迭代器失效可能是什么原因导致的?
STL的容器,STL中的容器包括 序列式容器,关联式容器。但是在使用某些容器的时候会出现迭代器失效的问题 。
通常 数组, 链表, 树结构 会出现迭代器失效。 vector list,map(set,mulitimap, mulitiset)。
vector迭代器失效 。
失效现象:
在调用erase函数进行删除某一个元素或者迭代器的时候,当前位置及以后位置的迭代器会失效。
失效原因 :
在删除某一迭代器或者元素的时候,会将后面的元素向前移动,导致这个元素以后的迭代器都没有指向正确的位置,并且最后一个迭代器指向的空间内容无效。
解决方法:
为erase设置一个返回值,返回当前结点的下一个位置的迭代器,即iterator it =erase(pos)。
失效现象
在调用erase函数进行删除某一个结点时,导致这个结点的迭代器失效。
失效原因
在将结点删除以后,没有改变当前迭代器的指向。
解决方法
第一种:
为erase函数设置一个返回值,返回当前结点的下一个结点的迭代器,即 iterator it = erase (pos)。
2. 了解设计模式,单例模式 和 简单工程模式:
单例模式要求:
成员函数 Get实力对象的接口创建对象。
构造函数 拷贝构造函数 函数重载 都私有化。 可能要考虑加锁。
3.命令行了解
cpu占有率的命令 top 。
4.进程 和 线程的概念。
线程(thread) 是操作系统能够进行运算调度的最小单位。
线程同步 进程同步。
进程:程序跑起来就是进程。
5.内核空间 和 用户空间。
kernel 和 usr 空间 0到3g 用户空间 3g 到 4g 内核空间 。
当进程运行在内核空间时就处于内核态,而进程运行在用户空间时则处于用户态。
是没有内核空间、用户空间以及内核态、用户态这些概念的。可以认为所有的代码都是运行在内核态的,因而用户编写的应用程序代码可以很容易的让操作系统崩溃掉。
Linux 来说,通过区分内核空间和用户空间的设计,隔离了操作系统代码(操作系统的代码要比应用程序的代码健壮很多)与应用程序代码。
即便是单个应用程序出现错误也不会影响到操作系统的稳定性,这样其它的程序还可以正常的运行(Linux 可是个多任务系统啊!)。
系统调用 中断 定时器中断