迭代器相关
iterator begin(); | 正向迭代器:返回一个迭代器,指向vector对象的第一个元素 |
iterator end(); | 正向迭代器:返回一个迭代器,指向vector对象最后一个元素的后边 |
reverse_iterator rbegin(); | 反向迭代器:返回一个迭代器,指向vector对象最后一个元素 |
reverse_iterator rend(); | 反向迭代器:返回一个迭代器,指向vector对象的第一个元素的前边 |
容量相关
size_t size ( ) const; | 获取当前对象中元素的个数 |
size_t max_size ( ) const; | 获取当前对象最多可以容纳多少个元素,包含还未分配给该对象的空间 |
size_t capacity( ) const; | 获取当前对象的容量,是已经分配给对象的空间 |
void resize( size_t sz, T c = T() ); | 将当前对象的元素个数设置为sz个,sz比size大则默认使用0来填充 |
bool empty( ) const; | 判空,当前对象元素为空(size值为0),返回true,否则返回false |
void reserve( size_t n); | 保证当前对象的容量至少为n个 |
元素获取
operator[ ] | 根据下标来访问元素 |
const_reference at (size_t n) const reference at (size_t n) |
获取下标为n的位置的元素,作用域 [ ]类似 |
const_reference front() const reference front() |
获取对象的第一个元素 |
const_reference back() const reference back() |
获取对象的最后一个元素 |
数据修改
void assign(InputIterator first,InputIterator last); void assign(size_t n, const T& u); |
将新的内容分配给对象,调用前丢弃向量中包含的所有元素后用参数指定的元素替换它们。 第二个版本是将对象里边的内容替换成n 个 u |
void push_back(const T& x); | 尾插,插入元素之前会先检测是否有插入的空间,如果不够了会进行扩容 |
void pop_back(); | 尾删,不会改变容量 |
void insert ( iterator pos, size_t n, const T& x); void insert (iterator pos,IpIter first,IpIter last); |
指定位置插入,指定的位置必须是用迭代器表示 |
iterator erase(iterator pos); iterator erase(iterator first, iterator last); |
指定位置删除,指定的位置必须是用迭代器表示 |
swap() | 交换两个对象的内容 |
clear() | q清空对象的元素,即将size设置为0 |
#include <iostream>
using namespace std;
#include <vector>
void Show(vector<int>& v)
{
for (int i = 0; i < v.size(); i++)
cout << v[i] << " ";
cout << endl;
}
int main()
{
vector<int> v1;
for (int i = 0; i < 7; i++)
v1.push_back(i);
Show(v1);
v1.pop_back();
cout << "pop_back" << endl;
Show(v1);
cout << endl;
vector<int>::iterator it1 = v1.begin();
cout << "insert" << endl;
v1.insert(it1, 66); //在某个位置插入一个元素
int arr[5] = { 6, 7, 8, 9, 10 };
v1.insert(it1, arr, arr + 2); //在每个位置插入一段序列
Show(v1);
cout << endl;
vector<int> v2;
for (int i = 0; i < 8; i++)
v2.push_back(i+3);
cout << "erase" << endl;
v2.erase(v2.begin()+1); //删除一个元素
Show(v2);
v2.erase(v2.begin(), v2.end()-3); //删除一段元素
Show(v2);
cout << endl;
cout << "swap" << endl;
cout << "v1 :" ;
Show(v1);
cout << "v2 :" ;
Show(v2);
v2.swap(v1);
cout << "after swap" << endl;
cout << "v1 :" ;
Show(v1);
cout << "v2 :" ;
Show(v2);
cout << endl;
cout << "clear" << endl;
v1.clear();
cout << "size of v1: " << v1.size() << endl; //size被清为0
cout << "capacity of v1: " << v1.capacity() << endl; //容量依然不变
return 0;
}