添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
vvecotr ( int size = 20 ) { //多少个元素。 alloc = new Allocator < T > ( ) ; _begin = alloc - > allocate ( size ) ; //开辟多少个内存 _end = _begin + size ; _now = _begin ; //析构函数 ~ vvecotr ( ) { free ( _begin ) ; delete alloc ; //拷贝构造函数 vvecotr ( const vvecotr < T > & vec ) { //拷贝构造函数 alloc = new Allocator < T > ( ) ; int size = vec . _end - vec . _begin ; _begin = alloc - > allocate ( size ) ; _end = _begin + size ; _now = _begin ; T * p = vec . _begin ; for ( ; p != vec . _now ; p ++ , _now ++ ) { alloc - > construct ( _now , * p ) ; //拷贝赋值构造函数 vvecotr & operator = ( const vvecotr < T > & vec ) { if ( this == & vec ) return * this ; alloc - > deallocate ( _begin ) ; alloc = new Allocator < T > ( ) ; int size = vec . _end - vec . _begin ; _begin = alloc - > allocate ( size ) ; _end = _begin + size ; _now = _begin ; T * p = vec . _begin ; for ( ; p != vec . _now ; p ++ , _now ++ ) { alloc - > construct ( _now , * p ) ; return * this ; vvecotr ( vvecotr < T > && vec ) { cout << "vvecotr( vvecotr<T>&&vec){" << endl ; alloc = vec . alloc ; _begin = vec . _begin ; _now = vec . _now ; _end = vec . _end ; vec . _begin = vec . _end = vec . _now = nullptr ; vec . alloc = nullptr ; vvecotr & operator = ( vvecotr < T > && vec ) { //不会出现自赋值 alloc = vec . alloc ; _begin = vec . _begin ; _now = vec . _now ; _end = vec . _end ; vec . _begin = vec . _end = vec . _now = nullptr ; vec . alloc = nullptr ; return * this ; void push_back ( const T & val ) { if ( _now == _end ) { resize ( ) ; alloc - > construct ( _now , val ) ; _now ++ ; void pop_back ( ) { if ( _now != _begin ) { alloc - > destory ( _now -- ) ; T & operator [ ] ( int index ) { return _begin [ index ] ; bool empty ( ) { return _now == _begin ; int size ( ) { return _now - _begin ; void show ( ) { T * p = _begin ; while ( p != _now ) { cout << * p << " " ; p ++ ; cout << endl ; private : T * _begin ; T * _now ; T * _end ; Alloc * alloc ; void resize ( ) { int size = _end - _begin ; T * p = alloc - > allocate ( size * 2 ) ; for ( int i = 0 ; i < size ; i ++ ) { p [ i ] = _begin [ i ] ; alloc - > deallocate ( _begin ) ; _begin = p ; _now = p + size ; _end = p + size * 2 ; vvecotr < int > get ( ) { vvecotr < int > vec ( 50 ) ; for ( int i = 0 ; i <= 5 ; i ++ ) vec . push_back ( i ) ; return vec ; int main ( ) { vvecotr < int > vec ( 50 ) ; for ( int i = 0 ; i <= 15 ; i ++ ) vec . push_back ( i ) ; vec . show ( ) ; //测试右值拷贝构造 // vvecotr<int> a = std::move(vec); // cout<<a.size()<<endl; //测试右值拷贝赋值 // vvecotr<int>a; // a=get(); // a.show(); return 0 ; #include&lt;iostream&gt;using namespace std;//实现vector代码template&lt;typename T&gt;class Vec{public : Vec(int size=10){ _first=new T[size]; _last=_first; _end=_first+size; } ~Vec(){ delete[] _first; . 请参阅以供参考。 ####引导群集假设我们有一个包含3个服务器的群集(A 192.168.1.1,B 192.168.1.2,C 192.168.1.3),为了引导群集,我们必须选择三个服务器之一作为启动服务器,例如服务器A。在A的配置文件中,将@servers属性设置为服务器A本身的地址,即: servers=192.168.1.1 之后,在服务器A上运行二进制raftc ,这将创建一个仅由一个服务器(也是引导服务器)组成的集群,即服务器A。 ./raftc 从现在开
迭代器失效 迭代器的主要作用就是让算法能够不用关心底层数据结构,其底层实际就是一个指针,或者是对指针进行了封装,比如: vector 的迭代器就是原生态指针T*。因此迭代器失效,实际就是迭代器底层对应指针所指向的 空间 被销毁了,而使用一块已经被释放的 空间 ,造成的后果是程序崩溃(即如果继续使用已经失效的迭代器,程序可能会崩溃)。 对于 vector 可能会导致其迭代器失效的操作有: 会引起其底层 空间 改变的操作,都有可能是迭代器失效,比如:resize、reserve、insert、assign、push_back等。
文章目录 RPC 实现 基于TCP的仿Dubbo 实现 方法调用效果 实现 分模块写接口通过代理写好了客户端写服务端,并联调rpc代码 实现 myRpcrpc-clientrpc-interfacerpc-server源码 RPC 实现 基于TCP的仿Dubbo 实现 还记得第一次听到这词是在别人的 面试 视频里,简单了解了一下只知道是远程调用。 万万没想到我的第一次 面试 的第一个问题就是与此相关,希望认真准备每一次 面试 ,及时查漏补缺,谨以此文,代表诚意~奥利给! my-rpc通过client调用interface给server 方法调用效果 实现 序列化、并统一编码 实例和接口 vector 中存储了对象的指针,调用clear后,并不会调用这些指针所指对象 析构 函数,因此要在clear之前调用delete; 如果 vector 存储的是对象,调用clear后,自建类型的对象(int之类的)直接删除,若是外部类型,则调用 析构 函数。 class Test public: Test() { cout<<"Test cons"<...
本文基于STL vector 源代码,但是不考虑 分配器 allocator,迭代器iterator,异常处理try/catch等内容,同时对_Ucopy()、 _Umove()、 _Ufill()函数也不会过度分析。 一、 vector 的定义 template<class _Ty, class _Ax> class vector : public _ Vector _val<_Ty, _Ax> { // varying size array of v
好的,那我可以给您提供一些可能会出现在现场 面试 项目和 代码环节的题目。 1. 实现 一个 LRU Cache(Least Recently Used Cache) 2. 实现 一个简单的爬虫 3. 实现 一个二叉树的遍历,包括前序、中序和后序遍历 4. 实现 一个快速排序算法 5. 实现 一个归并排序算法 6. 实现 一个单例模式的类 7. 实现 一个生产者消费者模型 8. 实现 一个线程池 9. 实现 一个 TCP 服务器和客户端 10. 实现 一个简单的 HTTP 服务器 当然,这只是一些可能的题目,具体的题目还要根据公司和岗位的不同而有所变化。建议您在准备 面试 前,多关注一些相关的技术 面试 题目,适当练习 代码和 写项目的能力。同时,也要学会在紧张的 面试 环境下保持冷静和清晰的思考。