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

如何建立手机网站快递网站模板

如何建立手机网站,快递网站模板,wordpress xampp 本地,集团网站 备案一、基本概念 vector教据结构和数组非常相似,也称为单端数组,但是数组是静态空间,而vector可以动态扩展。 动态的扩展流程如下: 动态扩展并不是在原空间之后续接新空间,而是找更大的广存空间,然后将原数据拷贝新空间&…

一、基本概念

vector教据结构和数组非常相似,也称为单端数组,但是数组是静态空间,而vector可以动态扩展。
动态的扩展流程如下:
动态扩展并不是在原空间之后续接新空间,而是找更大的广存空间,然后将原数据拷贝新空间,释放原空间。
在这里插入图片描述
vector容器的迭代器是支持随机访问的迭代器,也就是说可以随机访问容器内的任何一个位置的数据。

二、vector的构造函数

vector v; 采用模板实现类实现,默认构造函效。
vector(v.begin(), v.end( )); 将v[begin(), end())区间中的元素拷贝给本身。
vector(n,elem) ; 构造函数将n个elem拷贝给本身。
vector( const vector &vec); 拷贝构造函数。
具体的实现方法如下所示:

	//默认构造方式vector<int> v;for (int i = 0; i < 4; i++){v.push_back(i);}VectorPrint(v);// 通过区间的方式进行构造vector<int>v1(v.begin(), v.end());VectorPrint(v1);//通过n个elem的方式构造vector<int>v2(2, 100);VectorPrint(v2);//通过拷贝构造的方式进行传递vector<int>v3(v2);VectorPrint(v3);

三、vector赋值操作

当我们构建好vector之后,我们可以对vector进行赋值操作,具体的样例如下:

vector& operator=( const vector &vec); 重载等号操作符。
assign(beg, end) ;将[beg, end)区间中的数据拷贝赋值给本身。
assign(n,elen); 将n个elem拷贝赋值给本身。
具体的实现细节如下:

	//赋值操作:重载等号vector<int>v1;v1 = v;VectorPrint(v1);//赋值操作:assign操作1vector<int>v2;v2.assign(v1.begin(), v1.end());VectorPrint(v2);//赋值操作:assign操作2vector<int>v3;v3.assign(2, 100);VectorPrint(v3);

四、vector容量和大小

具体的函数接口如下:
empty( ); 判断容器是否为空
capacity(); 容器的容量
size(); 返回容器中元素的个数
resize( int num); 重新指定容器的长度为num,若容器变长,则以默认值0填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
resize( int nun, elem); 重新指定容器的长度为num,若容器变长,则以elem值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除
具体的实现样例如下:

	vector<int> v;for (int i = 0; i < 10; i++){v.push_back(i);}if (v.empty()){cout << "容器为空" << endl;}else{cout << "容器不为空" << endl;cout << "容器容量为:" << v.capacity() << endl; cout << "容器的大小为:" << v.size() << endl;} //重新指定容器大小,多出的位置用默认值0填充v.resize(10);//重新指定容器大小,多出的位置用设置值10填充v.resize(15, 10);//重新指定容器大小,超出的部分会被删掉v.resize(2);

五、vector插入和删除

具体的实现接口如下:
push_back(ele);尾部插入元素ele
pop_back();删除最后一个元素
insert (const_iterator pos,ele);迭代器指向位pos插入元素ele
insert( const_iterator pos,int count,ele);迭代器指向位置pos插入count个元素ele
erase(const_iterator pos);删除迭代器指向的元素
erase(const_iterator start,const_iterator end);删除迭代器从start到end之间的元素
clear();删除容器中所有元素
具体样例如下:

	vector<int> v;//尾插法插入数据v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);v.push_back(5);vectorPrint(v);//尾部删除法,一次删一个v.pop_back();vectorPrint(v);//插入,第一个参数是迭代器v.insert(v.begin(), 100);vectorPrint(v);//插入,第一个参数是迭代器,插入两个10v.insert(v.begin(), 2, 10);vectorPrint(v);//删除v.erase(v.begin()+3);vectorPrint(v);//删除一个区间v.erase(v.begin() + 3, v.end()-2);vectorPrint(v);//清空v.clear();vectorPrint(v);

输出结果为:

1 2 3 4 5
1 2 3 4
100 1 2 3 4
10 10 100 1 2 3 4
10 10 100 2 3 4
10 10 100 3 4

六、vector的数据存取

具体的实现接口如下:
at( int idx); 返回索引idx所指的数据
operator[]: 返回索引idx所指的数据
front( ); 返回容器中第一个数据元素
back();返回容器中最后一个数据元素
具体实现样例如下:

	for (int i = 0; i < v.size(); i++){//使用at接口进行输出cout << v.at(i) << " ";//使用索引值进行输出cout << v[i] << " ";//获取第一个元素cout << v.front() << endl;//获取最后一个元素cout << v.back() << endl;}

七、vector互换容器

实现两个容器内元素进行互换。
函数接口如下:
swap(vec); 将vec与本身的元素互换
具体的实现样例如下:


void PrintVector(vector<int> &v)
{for (vector<int>::iterator it = v.begin(); it < v.end(); it++){cout << *it << " ";} cout << endl;
}vector<int> v;vector<int> v1;for (int i = 0; i < 3; i++){v.push_back(i);v1.push_back(i+10);}PrintVector(v);PrintVector(v1);v.swap(v1);PrintVector(v);PrintVector(v1);

以上接口的实用技巧:

	vector<int> v;for (int i = 0; i < 3000; i++){v.push_back(i);} cout << v.capacity() << "容量"<<endl;cout << v.size() << "大小"<<endl;//当我们重置容器的大小之后1v.resize(2);cout << v.capacity() << "容量"<<endl;cout << v.size() << "大小"<<endl;

有以上的代码,代码的输入为:

3597容量
3000大小
3597容量
2大小

我们可以看出,当最先的容器申请了3597大小的容量,但是当我们重置容器大小之后,虽然容器的大小变小了,但是容量并没有变化。这就造成了资源的浪费。我们可以通过以下的操作来收缩容器的容量

vector<int>(v).swap(v);

对以上操作进行解释,vector(v)操作是创建了一个新的对象,该对象为匿名对象,这个匿名对象是按照v的大小来初始化,初始化之后调用swap操作之后将指向v的指针指向了该匿名对象,匿名对象指针指向了v,当匿名对象实用完成之后,编译器会将匿名对象指针指向的内存进行回收。通过这样的一个操作达到了收缩容量的作用。

八、vector的预留空间

该操作可以减少vector在动态扩展容量时的扩展次数,具体的接口说明如下:
reserve(int len); 容器预留len个元素长度。预留位置不初始化,元素不可访问。
具体的实现样例如下:

	vector<int> v;//提前开辟够量的空间v.reserve(199999);int num = 0;int *p = NULL;for (int i = 0; i < 199999; i++){v.push_back(i);if (p != &v[0]){p = &v[0];num++;}}cout << num << endl;
}

当随着容器内需要存放的数据不断的增大,容器需要不断的申请内存空间,这样的操作需要很大的工程,所以为了避免这样重复的操作,所以我们需要实现申请一块已经足够的空间。

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

相关文章:

  • 创建网站平台要多少钱无线网站制作
  • 网站提供的服务纸业建站服务
  • 网站诊断与优化的作用免费建网站系统平台
  • 小城市网站建设广州有几个区分别叫什么
  • 个人免费域名注册网站青岛模板做网站
  • 网络工程师和网站开发员城市房产网
  • 服装网站建设项目实施报告范文耳机商城网站开发
  • 延吉网站制作公司网站未备案吗
  • 罗湖商城网站设计价格福州外贸网站建设
  • 手机搭建本地网站东莞凤岗镇
  • 英国网站域名怎么下载ppt模板
  • 做网站建设需要做哪些工作室开发小程序的费用明细
  • 免费dede企业网站模板贵州省房屋和城市建设厅官方网站
  • 怎样设计一个移动网站openshift安装wordpress密码忘记
  • 装修行业 网站建设网址大全有哪些
  • 建设网站企业注册人员在建设网站入账
  • 一般网站服务器吉林长春最新消息
  • 贵阳企业免费建站教育网站建站
  • 外汇交易平台网站建设网站开发毕设参考文献
  • 商学院网站建设建议ppt怎么做网站
  • wordpress网站下方重庆百度搜索排名优化
  • 网页设计网站免费中山手机网站建设电话
  • 梅州做网站wlwl洛阳霞光做网站
  • 浙江中联建设集团有限公司网站可以直接打开网站的方法
  • 哪个网站可以做免费商业推广西部域名网
  • 网站维护中 页面美食网站设计模板
  • 网站尺寸自适应定州做网站
  • 最全的数据网站做网站得花多少钱
  • 网站建设分销协议wordpress用来构建什么
  • 兼职做页面的网站编写小程序