vector中常见接口的介绍与使用

迭代器相关

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;
}




猜你喜欢

转载自blog.csdn.net/guaiguaihenguai/article/details/81054064