栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

vector容器

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

vector容器

vector基本概念 普通数组的区别

数组是静态空间,vector容器可以动态扩展,增加长度

动态扩展并不是在原空间之后续接新空间,而是找到比原来更大的内存空间,将原数据拷贝到新空间,释放原空间

vector容器的迭代器是支持随机访问的迭代器

vector构造函数

vector v ;                          //使用模板类,默认构造函数vector(v.begin(),v.end());             //将[v.begin(),v.end())区间中的元素拷贝给本身vector(n,elem);                          //将n个elem拷贝给本身vector(const vector &v) ;                   //拷贝构造函数 vector赋值

vector& operator=(const vector &v);               //重载赋值运算符assign(v.begin(),v.end());                     //将[v.begin(),v.end())区间中的元素赋值给本身assign(n,elem);                                          //将n个elem赋值给本身 vector容量和大小

empty();                       //判断容器是否为空,为空返回1,否则返回0capacity();                         //返回容器的容量size();                       //返回容器的大小,即容器中元素的个数resize(int num);                           //重新指定容器的长度为num,若容器变长,则以默认值0填充新位置,如果容器变短,则末尾超过容器长度的元素被删除resize(int num,int elem);                     //重新指定容器的长度为num,若容器变长,则以elem填充新位置,如果容器变短,则末尾超过容器长度的元素被删除 vector插入和删除

push_back(ele);                                     //尾部插入元素elepop_back();                                       //删除最后一个元素insert(const_iterator pos,ele);                        //在迭代器指向的位置pos处插入一个元素eleinsert(const_iterator pos,int count,ele);           //在迭代器指向的位置pos处插入count个元素eleerase(const_iterator pos);                          //删除迭代器指向的元素erase(const_iterator begin,const_iterator end);              //删除迭代器从begin到end之间的元素clear();                                                //删除容器中所有元素 vector数据存取

at(int id);                           //返回索引id所指的数据operator[];                      //返回[]内索引所指的数据front();                         //返回容器中第一个元素back();                             //返回容器中最后一个元素 vector互换容器 

swap(v);             //容器v和当前容器互换

实际用于收缩内存 

void test()
{
	vector v;
	for (int i = 0; i < 100000; ++i)
	{
		v.push_back(i);
	}
	cout << "初始时:" << endl;
	cout << "v的容量:" << v.capacity() << endl;
	cout << "v的大小:" << v.size() << endl;
	
	cout << "重新指定空间后:" << endl;
	v.resize(10);
	cout << "v的容量:" << v.capacity() << endl;
	cout << "v的大小:" << v.size() << endl;

	//用swap收缩内存
    vector(v).swap(v);
	cout << "收缩内存后:" << endl;   
	cout << "v的容量:" << v.capacity() << endl;
	cout << "v的大小:" << v.size() << endl;
}
vector预留空间 

reserve(int len);               //容器预留len个元素长度,预留的位置并不初始化,同时也不可访问

功能:减少vector在动态扩容时的扩展次数

void test()
{
	vector v;
	v.reserve(10000);    //请尝试删除此行

	int num = 0;       //计算扩容次数      
	int* p = NULL;
	for (int i = 0; i < 10000; ++i)
	{
		v.push_back(i);
		if (p != &v.at(0))
		{
			p = &v[0];
			num++;
		}
	}
	cout << num << endl;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/722814.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号