简介
Vectors 包含着一系列连续存储的元素,其行为和数组类似。访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线性时间复杂度。
实验
#include <iostream>
#include <vector>
using namespace std;
/** * vector容器: * 动态数组 单口容器 * 数据结构是一张线性表,连续内存 * * 1,迭代器: * 正向迭代器 begin(), end() * 反向迭代器 rbegin(),rend() * * 2,加入/删除 * 在尾部插入 push_back() 时间O(1) * 删除尾部元素 pop_back() 时间O(1) * 在i位置之前插入 insert() 时间O(n) 3个重载 * 1, iterator insert( iterator loc, const TYPE &val ); 在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器, * 2, void insert( iterator loc, size_type num, const TYPE &val ); 在指定位置loc前插入num个值为val的元素 * 3, void insert( iterator loc, input_iterator start, input_iterator end ); 在指定位置loc前插入区间[start, end)的所有元素 * * 3,交换两个容器 swap (其实是指针交换) * * 4,初始化 * vector<T> vtr() ... * * 5,改变个数大小 resize() * * 6,第一个和最后一个元素 front(),back() * * 7,运算符重载进行访问元素不抛异常,而用成员函数会抛异常 * * 8,一般来说支持中括号的运算符的访问可以支持迭代器随机访问! vector支持! */
int main() {
int arr[] = {0,1,2,4,5,6,7,8};
vector<int > vtr (arr, arr+8); //迭代器指针 初始化
for (vector<int >::iterator it = vtr.begin(); it != vtr.end(); it++) {
cout << *it << " ";
}
cout << endl;
cout << "at = " << vtr.at(3) << endl;
cout << "[] = " << vtr[3] <<endl;
cout << endl;
cout << "vector size = " << vtr.size() << endl;
cout << "vector Memory size = " << vtr.capacity() << endl;
cout << endl;
try {
cout<< vtr[8] << endl; //程序直接崩掉
cout<< vtr.at(8) << endl; //抛异常
}catch(...) {
cout << "throw exception!" << endl;
}
return 0;
}