STL之vector篇
vector容器动态数组 可变数组单口容器动态增长:插入新元素的时候,如果内存空间不足,vector会自动申请更大的空间,将原来的空间的数据拷贝到新空间,同时释放旧空间,再把新元素插入到新空间,默认申请旧空间两倍大小的新空间vector常用API构造函数vector();vector( size_type num, const TYPE &val );...
·
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指定位置的元素的引用,能够辨别出访问是否越界并在越界的时候抛出一个异常
更多推荐
已为社区贡献4条内容
所有评论(0)