stl手写合集

本文分享了一个简单的自定义C++ Vector容器实现,该实现基于动态数组并支持基本操作如push_back和[]访问。虽然其性能相较于标准库STL中的vector有所差距,但对于理解容器底层实现原理有一定的帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

水平不够写得和stl差远了。。只能说是基本实现其功能吧。。。现在对c++的了解基本是0,等以后系统学习之后也许会慢慢完善。
时隔多年我来吐槽一下,我当年真是个弱智,连析构函数都没写…至于这个为啥不更新了,主要是我觉着我要学的还很多,再加上不想重复造轮子…不过最近在尝试用oop写一些acm模板,等再测试一下正确性后也许会放到博客来(以后写的东西大概会先发布到个人网站santongding.com)
vector

template <typename type>
struct vtr{
    type *s,*e;
    unsigned int memsize,cnt;
    vtr(int n=0){
        memsize=std::max(n,2);
        e=s=new type [memsize];
        cnt=n;
    }
    void push_back(type v){
        if(cnt==memsize){
            memsize<<=1;
            type *tp=new type[memsize];
            memcpy(tp,s,sizeof(type)*cnt);   
            delete []s;
            e=(s=tp)+cnt;
        }
        *(e++)=v;
        cnt++;
    }
    type & operator [] (int v){
        return *(s+v);
    }
    int size(){
    	return cnt;
	}
};

实测常数大概是纯数组的2倍左右,stl::vector大概是3~4倍常数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值