vector容器
  • 动态数组 可变数组
  • 单口容器
  • 支持随机访问

在这里插入图片描述

  • 动态增长:插入新元素的时候,如果内存空间不足,vector会自动申请更大的空间,将原来的空间的数据拷贝到新空间,同时释放旧空间,再把新元素插入到新空间,默认申请旧空间两倍大小的新空间

vector常用API
构造函数
vector();   
vector( size_type num, const TYPE &val );   
vector( const vector &from );   
vector( input_iterator start, input_iterator end ); 

C++ Vectors可以使用以下任意一种参数方式构造:

  • 无参数 - 构造一个空的vector,
  • 数量(num)和值(val) - 构造一个初始放入num个值为val的元素的Vector
  • vector(from) - 构造一个与vector from 相同的vector ,拷贝构造
  • 迭代器(start)和迭代器(end) - 构造一个初始值为[start,end)区间元素的Vector(注:半开区间).

举例,下面这个实例构造了一个包含5个值为42的元素的Vector

vector<int> v1( 5, 42 );

运算符
v1 == v2   
v1 != v2   
v1 <= v2   
v1 >= v2   
v1 < v2   
v1 > v2    
v[] 

C++ Vectors能够使用标准运算符: ==, !=, <=, >=, <, 和 >. 要访问vector中的某特定位置的元素可以使用 [] 操作符.

两个vectors被认为是相等的,如果:

  • 它们具有相同的容量
  • 所有相同位置的元素相等.

vectors之间大小的比较是按照词典规则.


erase 函数
iterator erase( iterator loc );
iterator erase( iterator start, iterator end );

erase函数要么删作指定位置loc的元素,要么删除区间[start, end)的所有元素.返回值是指向删除的最后一个元素的下一位置的迭代器.例如:

// 创建一个vector,置入字母表的前十个字符
vector<char> alphaVector;
for( int i=0; i < 10; i++ )
{
    alphaVector.push_back( i + 65 );
}
int size = alphaVector.size();
vector<char>::iterator startIterator;
vector<char>::iterator tempIterator;

for( int i=0; i < size; i++ )
{
    tartIterator = alphaVector.begin();
    alphaVector.erase( startIterator );

	// Display the vector
	for( tempIterator = alphaVector.begin(); 
  		tempIterator != alphaVector.end(); tempIterator++ )
	{
		cout << *tempIterator;
	}
	cout << endl;
} 
BCDEFGHIJ
CDEFGHIJ
DEFGHIJ
EFGHIJ
FGHIJ
GHIJ
HIJ
IJ
J

assign函数:
void assign( input_iterator start, input_iterator end );   
void assign( size_type num, const TYPE &val );

assign() 函数要么将区间[start, end)的元素赋到当前vector,或者赋num个值为val的元素到vector中.这个函数将会清除掉为vector赋值以前的内容.


还有许多:

  • size() 返回容器中元素个数
  • empty() 判断容器是否为空
  • capacity() 容器的容量
  • insert() insert( iterator loc, size_type num, const TYPE &val ); // 迭代器指向位置插入num个val
  • front() 返回容器的第一个元素
  • back() 返回容器的最后一个元素
  • reserve() 预留空间,非初始化不可访问
  • resize() 重新指定容器大小;若变长,则默认值填充,若变短,则从后删除,变短capacity大小不变**,可用swap()来收缩空间,减小capacity
vector<int>(v).swap(v);		//可以将容器空间收缩到存储原有数据的最小空间
  • at() 返回当前Vector指定位置的元素的引用,能够辨别出访问是否越界并在越界的时候抛出一个异常
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐