STL中vector类的自我简单实现

前面写了STL中关于string类的自我实现,感兴趣的小伙伴可以移步至这里((45条消息) STL中string类的自己实现_芜湖开冲~的博客-CSDN博客https://blog.csdn.net/qq_55143256/article/details/124212845),接着上面,今天我们来实现vector类的简单实现(友情提示:很全,比我网上找到的大部分都全),所谓的vector类,其实就是顺序表,只不过这个顺序表不仅能存放int,还能存放各种各样的类型,vector类的实现其实也不是很难,别看底下代码多,大部分都是代码复用,真正难的代码可以说几乎没有,都是一马平川可以看完的.

目录

详细步骤

1.设置自己的命名空间

2.理解模板概念

3.设置类名

4.设置权限

 5.this指针

6.私有的三个变量

7.构造析构函数

构造函数

析构函数

赋值运算符重载

析构函数

8.迭代器

9.容量

获取大小

修改大小

10.修改里面内容

下标运算符重载

交换函数

尾插尾删

任意位置的插入与删除


详细步骤

1.设置自己的命名空间

为什么要设置自己的命名空间呢,很简单,人家自己有vector类,那我们要想玩,就得关起门,我们自己造我们自己的,不和他们一起玩,当然,你也可以不叫vector,也行,那没有和人家同名,就不需要这一步了,我的建议是加上,一方面显得专业,另一方面美观,编程也是一门艺术嘛,是吧,之后的代码都在命名空间里面.

我制造的命名空间(是不是很简单)

namespace cdd{}

2.理解模板概念

这个在我前面的博客中有写((46条消息) C++模板_芜湖开冲~的博客-CSDN博客https://blog.csdn.net/qq_55143256/article/details/123862256)

实在懒得翻的同学也可以稍微理解一下,模板嘛,就是给一个模子,然后根据模子来制造东西,当然,这个解释很明显太空了,建议不懂的小伙伴还是去看一看,都不是什么很难的东西,看一遍也就大概知道了,不然后面的代码你可能会看的有些艰难.

3.设置类名

这个也很好理解,就是我要实现自己的vector类,那肯定是在我自己的命名空间里面创建一个vector类,但是注意,因为人家的vector是容器,所谓容器,咱们理解的简单一点,就是模板类,所以vector的类的设置和前面实现的string类还是有一些区别的,当然,不大,你可以再想的简单一点,所谓的vector类容器,其实就是int类型的顺序表,只不过是把int换成了T, int*换成了T*,这样再看后面的代码,就简单多了,话不多说,看一下这个模板类的类名设置

namespace cdd {   //前面的命名空间
    template<class T>

    class vector {

}

}

嗯,其实也就是类名外面加了一行template<class T>而已,之后就是转化把int类型实现的顺序表里面的int转化为T,也就差不多了,不知道怎么用int实现顺序表也没关系,后面的代码没什么难度,看一看肯定也能看懂.

4.设置权限

就是有些东西大家一起分享,有些东西只能我自己知道,比如女孩子的年龄...

权限设置也很简单,一般而言,就三种,private(私有);public(公共);protected(保护),保护我们今天用不到,只说private和public,这两个很简单,一个是外面也能看的,一个是外面不能看的,举个栗子
 

class example {
public:
	void my_cout() {
		cout << a << endl;
	}
private:
	int a;
};
 
int main() {
	example s;
	s.a;
	s.my_cout();
	return 0;
}

这是一段很简单的代码,你可以在自己的编译器上面写一下,到时候会报错,我用的是VS2022,错误是这样的:

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值