【C++】vector模拟实现

在这里插入图片描述

🔥个人主页: Forcible Bug Maker
🔥专栏: STL || C++

前言

本篇博客主要内容:STL库中vector的模拟实现

在之前完成string以及学习了vector一些接口函数的基础上,这个vector的实现相当于是一个奖励内容,并不困难。不过我们这里vector底层实现和上次string的有所不同,是通过三个指针_start_finish_end_of_storage来维护这个模板类的。相信在看完今天vector的实现之后,能对C++的迭代器有更深的了解。

🔥vector需要实现的接口函数

由于涉及到了模板的内容,我们这次不会将vector实现的声明和定义分离。在后期模板进阶的阶段会进一步解答此问题,盲目将模板类的声明定义分离是很容易出错的(在对模板这部分内容不熟练的情况下)。
看看需要实现的接口函数:

#pragma once
#include<iostream>
#include<algorithm>
#include<cassert>
using namespace std;
namespace ForcibleBugMaker
{
   
    template<class T>
    class vector
    {
   
    public:
        // 这里vector的迭代器是一个原生指针
        typedef T* iterator;
        typedef const T* const_iterator;
        //迭代器获取接口
        iterator begin();
        iterator end()
        const_iterator cbegin()const;
        const_iterator cend() const;
         // 交换vector对象
        void swap(vector<T>& v);
        // 构造函数,析构函数以及赋值运算符重载
        vector();
        vector(int n, const T& value = T());
        template<class InputIterator>
        vector(InputIterator first, InputIterator last);
    
        vector(const vector<T>& v);
        vector<T>& operator=(vector<T> v);
        ~vector();
        // 容量获取和调整接口
        size_t size() const;
        size_t capacity() const;
        void reserve(size_t n);
        void resize(size_t n, const T& value = T());
        // 元素获取
        T& operator[](size_t pos);
        const T& operator[](size_t pos)const;
评论 162
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Forcible Bug Maker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值