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

网站内页权重邳州网站开发

网站内页权重,邳州网站开发,免费简约ppt模板,平台网站怎么做目录 一、常见接口 1.1 构造函数 1.2 访问与遍历 1.3 容量操作 1.4 增删查改 二、模拟实现 2.1 迭代器失效 2.2 源代码 一、常见接口 vector数据结构实际上是顺序表 详细解释与使用请参见官方网站:vector - C Reference (cplusplus.com) 1.1 构造函数 函…

目录

一、常见接口

1.1 构造函数

1.2 访问与遍历

1.3 容量操作

1.4 增删查改

二、模拟实现

2.1 迭代器失效

2.2 源代码


一、常见接口

vector数据结构实际上是顺序表

详细解释与使用请参见官方网站:vector - C++ Reference (cplusplus.com)

1.1 构造函数

函数名功能
vector()无参构造
vector(size_type n, const value_type& val =value_type())构造并初始化n个val
vector (const vector& x)拷贝构造
vector (InputIterator first, InputIterator last)使用迭代器进行初始化构造
void test1()
{vector<int> v1;vector<int> v2(10, 1);vector<int> v3(v2.begin(), v2.end());
}

1.2 访问与遍历

函数名功能
operator[]通过[]方式取
at(int idx)返回索引idx所指的数据(该函数会自动检查 n 是否在vector中有效元素的边界内,如果不是,则抛出异常。这与operator[]形成鲜明对比,后者不检查边界。)
begin+ end获取第一个数据位置的iterator/const_iterator,获取最后一个数据的下一个位置的iterator/const_iterator
rbegin + rend获取最后一个数据位置的reverse_iterator,获取第一个数据前一个位置的reverse_iterator
范围for搭配auto实现遍历
//遍历操作
void test2()
{vector<int> v(10, 1);//1.for (size_t i = 0; i < v.size(); i++){cout << v[i] << " ";}cout << endl;//2.vector<int>::iterator it = v.begin();while (it != v.end()){cout << *it << " ";it++;}cout << endl;//3.for (auto e : v){cout << e << " ";}cout << endl;
}

1.3 容量操作

void test1()
{vector<int> v;// set some initial content:for (int i = 1; i < 10; i++)v.push_back(i);v.resize(5);v.resize(8, 100);v.resize(12);cout << "v contains:";for (size_t i = 0; i < v.size(); i++)cout << ' ' << v[i];cout << '\n';
}

1.4 增删查改

函数名功能
push_back尾插
pop_back尾删
insert在position之前插入val
erase删除position位置的数据
swap交换两个vector的数据空间
//插入和删除
void test1()
{vector<int> v1;//尾插v1.push_back(1);v1.push_back(2);v1.push_back(3);v1.push_back(4);v1.push_back(5);//尾删v1.pop_back();//插入v1.insert(v1.begin(), 6);v1.insert(v1.begin(), 2, 8);//删除v1.erase(v1.begin());//清空v1.erase(v1.begin(), v1.end());v1.clear();
}

二、模拟实现

2.1 迭代器失效

  • 插入元素(insert):向vector中插入元素可能导致重新分配内存,从而使所有的迭代器失效。
  • 删除元素(erase):删除元素后,指向被删除元素和其后的所有迭代器都会失效。
  • 添加元素(push_back或emplace_back):如果引起重新分配内存,则所有迭代器都会失效。

2.2 源代码

#pragma once
#include<iostream>
#include<assert.h>using namespace std;namespace paradiso
{template<class T>class vector{public:typedef T* iterator;typedef const T* const_iterator;vector(){}~vector(){delete[] _start;_start = _end_of_storage = _finish = nullptr;}iterator begin(){return _start;}iterator end(){return _finish;}const_iterator begin() const{return _start;}const_iterator end() const{return _finish;}void reserve(size_t n){if (n > capacity()){size_t old_size = size();T* tmp = new T[n];memcpy(tmp, _start, size() * sizeof(T));delete[] _start;_start = tmp;_finish = tmp + old_size;_end_of_storage = _start + n;}}size_t size(){return _finish - _start;}size_t capacity(){return _end_of_storage - _start;}T operator[](size_t i){assert(i < size());return _start[i];}bool empty(){return _start == _finish;}void push_back(const T& x){if (_finish != _end_of_storage){*_finish = x;++_finish;}else{reserve(capacity() == 0 ? 4 : capacity() * 2);*_finish = x;++ _finish;}}void pop_back(){assert(!empty());--_finish;}void insert(iterator pos, const T& x){if (_finish == _end_of_storage){size_t len = pos - _start;reserve(capacity() == 0 ? 4 : capacity() * 2);pos = _start + len;}iterator end = _finish - 1;while (end >= pos){*(end + 1) = *end;--end;}*pos = x;++_finish;}iterator erase(iterator pos){assert(pos >= _start);assert(pos < _finish);iterator end = _finish - 1;size_t len = pos - _start;while (end >= pos){*pos = *(pos + 1);pos++;}pos = _start + len;--_finish;return pos;}private:iterator _start = nullptr;iterator _finish = nullptr;iterator _end_of_storage = nullptr;};template<class T>void print_vector(const vector<T>& v){//在没有实例化的类模板里面取东西//typename vector<T>::const_iterator it = v.begin();auto it = v.begin();while (it != v.end()){cout << *it << " ";++it;}cout << endl;for (auto e : v){cout << e << " ";}cout << endl;}
}

http://www.yayakq.cn/news/908976/

相关文章:

  • 百度网站收录查询wordpress能进后台进不去首页
  • 如何不花钱开发网站怎么运营一个淘宝店铺
  • 国外可以做推广的网站有哪些哪个做网站平台好
  • 网站开发方案案例怎么自己做刷赞网站
  • 陕西网站制作公司排名怎么做网站点击率监控工具
  • h5链接怎么做仓山区seo引擎优化软件
  • 网站添加备案信息什么是网站开发流程
  • 网站优化排名易下拉教程微信小程序开发平台官网登录
  • 网站建设管理要求网站开发与维护的内容
  • 株洲企业网站建设国家扶持新型环保项目
  • 网站建设 010大连建设安全网站
  • 环保网站主题网站管理规定
  • 网站 如何 备案杭州平面设计师工资一般多少
  • 五屏网站建设如何建站如何注重内容建设
  • 邯郸个人做网站微信html5模板网站
  • 建一个网站需要什么手续傻瓜动态建站 工具
  • 网站集群建设方案创新的南昌网站制作
  • 网站建设案例基本流程图企业网站建设 论文
  • 安徽省建设工程信息网官方网站网站logo在哪里修改
  • php网站开发设计模式维修网站怎么做
  • 做网站编辑好还是推广好安徽网淮南
  • 网站建设加后台你做的网站会不会被人模仿
  • 温州网站制作哪家好网站设计外包
  • 鲜花购物网站源码运营推广的网站有哪些
  • 如何做网站怎么赚钱吗企业策划书模板word
  • 建筑行业资讯网站房产cms系统哪个好
  • 开发手机应用网站哪个网站做员工增员
  • 深圳专业做网站开发费用如何建开发手机网站首页
  • 呼市建设官方网站阿里云网站建设需要多少钱
  • 学校网站建设运行简介百度做的网站后台怎么更新