面试真题

C++ · 中等 · 拼多多

手撕 std::vector

中等 C++ 🎤 拼多多
参考答案
结论:std::vector是连续内存动态数组,手撕需实现内存管理、扩容和常用接口。核心要点:1. 内部维护起始指针data、大小sz、容量cap;2. 构造可分配cap空间,析构释放;3. push_back:若sz==cap则reserve(2*cap)(或+1)并拷贝原数据;4. pop_back减sz;operator[]返回data[i];reserve重新分配;resize改变sz并填充;5. 注意迭代器失效与异常安全。示例:template<typename T> class Vector { T* data; size_t sz, cap; void push_back(const T& v){ if(sz==cap) reserve(cap?cap*2:1); new(data+sz++) T(v); } };
题目整理自公开面经,答案由校招宝自研生成,仅供参考