欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++vector容器使用

程序员文章站 2024-03-17 23:41:16
...

简介

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