您的位置:首页 > 健康 > 美食 > 嵌入式软件开发和c++软件开发_武汉开始了全城封闭隔离_seo培训班_今日新闻最新头条

嵌入式软件开发和c++软件开发_武汉开始了全城封闭隔离_seo培训班_今日新闻最新头条

2024/12/21 22:37:40 来源:https://blog.csdn.net/m0_69282950/article/details/144486579  浏览:    关键词:嵌入式软件开发和c++软件开发_武汉开始了全城封闭隔离_seo培训班_今日新闻最新头条
嵌入式软件开发和c++软件开发_武汉开始了全城封闭隔离_seo培训班_今日新闻最新头条

 

枫の个人主页

你不能改变过去,但你可以改变未来

算法/C++/数据结构/C

 Hello,这里是小枫。C语言与数据结构和算法初阶两个板块都更新完毕,我们继续来学习C++的内容呀。C++是接近底层有比较经典的语言,因此学习起来注定枯燥无味,西游记大家都看过吧~,我希望能带着大家一起跨过九九八十一难,降伏各类难题,学会C++,我会尽我所能,以通俗易懂、幽默风趣的方式带给大家形象生动的知识,也希望大家遇到困难不退缩,遇到难题不放弃,学习师徒四人的精神!!!故此得名【C++游记】

 话不多说,让我们一起进入今天的学习吧~~~  

目录

1>> Vector容器

 1.1>>定义:

 1.2>>迭代器Iterator使用

1.3>>vector空间

1.4>>vector增删改查

2>>部分模拟实现

2.1>>Test.cpp

 2.2>>Vector.h

3>>结语


1>> Vector容器

        它与所有STL模板一样,都有着三大境界:筑基期(会用)、结丹期(知道原理)、     

元婴期(能自己扩展,造轮子给别人使用)

 1.1>>定义:

构造函数声明接口说明
vector()无参数构造
vector (size_type n,const value_type& val = value_type())构造并初始化n个val
vector(const vector& x);       拷贝构造
vector(Inputlterator first,Inputlterator last);使用迭代器进行初始化构造

 1.2>>迭代器Iterator使用

iterator的使用接口说明
begin+end获取第一个数据的位置,获取最后一个数据的下一个位置
rbegin+rend获取最后一个数据的位置,获取第一个数据前一个位置

 

1.3>>vector空间

容量空间接口说明
size获取数据个数
 capacity获取容量大小
empty判断是否为空
resize改变vector的size
reserve改变vector的capacity

1.4>>vector增删改查

vector增删改查接口说明
push_back       尾插
pop_back尾删
find查找(c++算法库)
insert       在position之前插入val
erase删除position位置的数据
swap交换两个vector的数据空间
operator[]像数组一样访问

2>>部分模拟实现

2.1>>Test.cpp

#include"vector.h"int main()
{wc::vector<int> v1;v1.push_back(1);v1.push_back(2);v1.push_back(3);v1.push_back(4);v1.push_back(5);for (const auto& e : v1){cout << e << " ";}cout << endl;for (size_t i = 0; i < v1.size(); i++){cout << v1[i] << " ";}cout << endl;return 0;
}

 2.2>>Vector.h

#pragma once
#include<assert.h>
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<vector>
#include<list>
#include<string>
#include<algorithm>using namespace std;
namespace wc 
{template<class T>//建立一个类模板class vector {public:typedef T* iterator;iterator begin() {//手动构建迭代器的开始return _start;}iterator end() {//手动构建迭代器的结束return _finish;}vector()//构造函数:_start(nullptr)//全部赋值为空指针, _finish(nullptr), _end_of_storage(nullptr){}~vector()//析构函数{delete[] _start;_start = _finish = _end_of_storage = nullptr;}size_t size() const//vector没有size,自己构造{return _finish - _start;}size_t capacity() const//vector没有capacity,自己构造{return _end_of_storage - _start;}void reserve(size_t n) {if (n > capacity()) {size_t oldSize = size();//之前的sizeT* tmp = new T[n];memcpy(tmp, _start, sizeof(T) * oldSize);delete[] _start;_start = tmp;_finish = _start + oldSize;//如果这里写size(),就会产生错误,因为_start值已经改变_end_of_storage = _start + n;}}T& operator[](size_t i) {assert(i < size());return _start[i];}void push_back(const T& x) {if (_finish == _end_of_storage) {reserve(capacity() == 0 ? 4 : capacity() * 2);}*_finish = x;_finish++;}private:iterator _start;iterator _finish;iterator _end_of_storage;};
}

3>>结语

        今日C++到这里就结束啦,如果觉得文章还不错的话,可以三连支持一下。感兴趣的宝子们欢迎持续订阅小枫,小枫在这里谢谢宝子们啦~小枫の主页还有更多生动有趣的文章,欢迎宝子们去点评鸭~C++的学习很陡,时而巨难时而巨简单,希望宝子们和小枫一起坚持下去~你们的三连就是小枫的动力,感谢支持~

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com