简介

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