当前位置: 首页 > wzjs >正文

网站推广平台怎么做快速优化网站排名的方法

网站推广平台怎么做,快速优化网站排名的方法,深圳市公司有哪些公司,网站的日常维护文章目录 介绍initializer_list与string的不同底层总代码 介绍 C 中的 vector 是一种序列容器,它允许你在运行时动态地插入和删除元素。 vector 是基于数组的数据结构,但它可以自动管理内存,这意味着你不需要手动分配和释放内存。 与 C 数组相…

文章目录

  • 介绍
  • initializer_list
  • 与string的不同
  • 底层
  • 总代码

介绍

C++ 中的 vector 是一种序列容器,它允许你在运行时动态地插入和删除元素。
vector 是基于数组的数据结构,但它可以自动管理内存,这意味着你不需要手动分配和释放内存。
与 C++ 数组相比,vector 具有更多的灵活性和功能,使其成为 C++ 中常用的数据结构之一。
vector 是 C++ 标准模板库(STL)的一部分,提供了灵活的接口和高效的操作。
C++ 中的 vector 是一种序列容器,它允许你在运行时动态地插入和删除元素

在这里插入图片描述

vector本质和 string一样也是模板
写法是vector< T > 名称 (T是类型)
他与string的接口差不多,但也有一点不同 。

在这里插入图片描述

我们来 看一下vector的构造,第一个是默认构造(看不懂的是内存池先不用管),第二个是n个 val的构造,第三个是迭代器区间的构造,第四个是拷贝构造。

initializer_list

vector 中和string比较增加了 initializer_list容器,这个容器可以作为接口的形参出现。

在这里插入图片描述

本身我们的{ }里面的内容就是initializer_list类型的
在这里插入图片描述

这3段代码 不同,d1本身是是vector< int >型的接受的类型类似于d3 是initializer_list< int >型但是它进行了隐式类型转化。
d2就是{1,2,3,4}作为形参传过去,d3则是{ }的真正类型。

与string的不同

此外vector和string类不同就是vector没有append函数就是不能加一个字符串,即使是vector< string >也只能一个一个加。
在这里插入图片描述
在这里插入图片描述
从两边形参上看vector只支持迭代器位置的修改,而string还支持下标位置pos的修改,同理其他接口 如erase也是这样

底层

首先我们要知道 和string不一样,定义char ,capacity,size。vector的成员变量都是 用迭代器定义的,我们 又可以把迭代器看作是T 就是类似于指针的东西,所以vector 就是 用指针定义的成员变量。

namespace Z
{template<class T>class vector{public:typedef T* iterator;typedef const T* const_iterator;
privite:iterator _start;//头指针类似于.begin()iterator _finish;//结尾元素的下一位置,类似于.end()iterator _endofstorage;//类似capacity,_start-_finish得来};

我们再来写构造函数有默认构造,还有无参构造还有initializer_list构造,析构,还有拷贝构造

	vector()//默认:_start(nullptr),_finish(nullptr),_endofstorage(nullptr){}vector(initializer_list<T> il)//initializer_list构造:_start(nullptr), _finish(nullptr), _endofstorage(nullptr){reserve(il.size());for (auto& e : il){push_back(e);}}~vector()//析构{if (_start){delete[] _start;_start = _finish = _endofstorage = nullptr;}}
vector(initializer_list<T> il)//initializer_list类型:_start(nullptr), _finish(nullptr), _endofstorage(nullptr)
{reserve(il.size());for (auto& e : il){push_back(e);}
}

其中initializer_list类型的reserve和 push_back都是省略this指针的。

常见 的一些接口

iterator begin()
{return _start;
}iterator end()
{return _finish;
}const_iterator begin() const
{return _start;
}const_iterator end() const
{return _finish;
}
T& operator[](size_t i)
{assert(i < size());return _start[i];
}size_t size() const
{return _finish - _start;
}size_t capacity() const
{return _endofstorage - _start;
}// 21:12
void reserve(size_t n)
{if (n > capacity()){size_t oldSize = size();T* tmp = new T[n];if (_start){memcpy(tmp, _start, sizeof(T) * oldSize);delete[] _start;}_start = tmp;_finish = _start + oldSize;_endofstorage = _start + n;}
}void push_back(const T& x)
{/*if (_finish == _endofstorage){reserve(capacity() == 0 ? 4 : capacity() * 2);}*_finish = x;++_finish;*/insert(_finish, x);
}bool empty()
{return _start == _finish;
}void pop_back()
{assert(!empty());--_finish;
}void insert(iterator pos, const T& x)
{assert(pos >= _start && pos <= _finish);if (_finish == _endofstorage){size_t len = pos - _start;reserve(capacity() == 0 ? 4 : capacity() * 2);pos = _start + len;}iterator i = _finish - 1;while (i >= pos){*(i + 1) = *i;--i;}*pos = x;++_finish;
}

总代码

namespace Z
{template<class T>class vector{public:typedef T* iterator;typedef const T* const_iterator;iterator begin(){return _start;}iterator end(){return _finish;}const_iterator begin() const{return _start;}const_iterator end() const{return _finish;}vector():_start(nullptr), _finish(nullptr), _endofstorage(nullptr){}vector(initializer_list<T> il):_start(nullptr), _finish(nullptr), _endofstorage(nullptr){reserve(il.size());for (auto& e : il){push_back(e);}}~vector(){if (_start){delete[] _start;_start = _finish = _endofstorage = nullptr;}}T& operator[](size_t i){assert(i < size());return _start[i];}size_t size() const{return _finish - _start;}size_t capacity() const{return _endofstorage - _start;}// 21:12void reserve(size_t n){if (n > capacity()){size_t oldSize = size();T* tmp = new T[n];if (_start){memcpy(tmp, _start, sizeof(T) * oldSize);delete[] _start;}_start = tmp;_finish = _start + oldSize;_endofstorage = _start + n;}}void push_back(const T& x){/*if (_finish == _endofstorage){reserve(capacity() == 0 ? 4 : capacity() * 2);}*_finish = x;++_finish;*/insert(_finish, x);}bool empty(){return _start == _finish;}void pop_back(){assert(!empty());--_finish;}void insert(iterator pos, const T& x){assert(pos >= _start && pos <= _finish);if (_finish == _endofstorage){size_t len = pos - _start;reserve(capacity() == 0 ? 4 : capacity() * 2);pos = _start + len;}iterator i = _finish - 1;while (i >= pos){*(i + 1) = *i;--i;}*pos = x;++_finish;}void erase(iterator pos);private:iterator _start;iterator _finish;iterator _endofstorage;};
http://www.dtcms.com/wzjs/153088.html

相关文章:

  • 宁波模板建站多少钱上海知名seo公司
  • 盘锦做网站怎样能在百度上搜索到自己的店铺
  • 网站中页面模板设计最新热搜榜
  • 乐清门户网站如何注册一个平台
  • 表格模板免费下载网站seo优缺点
  • 网站开发有哪些语言网络销售靠谱吗
  • 潍坊做网站潍坊做网站游戏推广
  • dedecms手机网站开发网络营销职业规划300字
  • 手机网站开发下载搜索引擎seo是什么意思
  • 做网站 分类搜索推广方案的推广内容怎么写
  • 要制作自己的网站需要什么google安卓手机下载
  • 网站可以几个服务器网站免费进入窗口软件有哪些
  • 网站开发客户流程 6个阶段百度网址大全在哪里找
  • 做食品网站用什么颜色百度云登录
  • wordpress 注册 填写密码搜狗网站seo
  • 做打鱼网站需要多少钱2023b站免费推广入口
  • 姑苏区最新通告win7系统优化大师
  • 做定制的B2b网站网站软文推广范文
  • 猪八戒建站服务百度指数网址是多少
  • 上海黄浦网站建设鲜花网络营销推广方案
  • 专业做网站产品上架的有吗推广宣传
  • 连云港做企业网站公司百度seo指南
  • 深圳工商注册核名查询系统搜索引擎优化心得体会
  • wordpress 免签约seo是什么意思广东话
  • 大连手机网站开发石家庄百度快照优化
  • vb网站开发营销技巧和营销方法培训
  • wordpress 登录跳转广州优化疫情防控措施
  • 网站建设及验收标准厦门网站建设公司
  • 政府网站 中企动力不受限制的万能浏览器
  • 做设计有哪些地图网站百度推广售后客服电话