C++ STL学习笔记二 vector向量容器

来源:互联网 发布:java编程输出金字塔 编辑:程序博客网 时间:2024/04/29 03:29

*
 *
 ********************************************
 *   vector容器的基础说明:
 ********************************************
 *
 * 可进行随机访问,并且实现了在容器的尾端插入新元素 
 * Random Access Container 和 Back Insertion Sequence
 * 在尾端插入、删除元素的时间复杂度为O(1),其它位置为O(n),n为元素个数
 * 对于插入的元素可以动态调整所占空间
 * 使用vector必须使用宏语句#include <vector>
 *
 **************************************************************************************
 *
 * 创建vector对象:
 * 1.vector<int> a;
 * 2.vector<int> a(10);      //具有10个元素的对象a,每个元素默认值为0
 * 3.vector<char> a(5,'k');
 * 4.vector<char> b(a);      //vector<char> c(a.begin(),a.end())
 *
 **************************************************************************************
 *
 * 初始化赋值
 * void push_back(const T& value)
 *
 **************************************************************************************
 *
 * 遍历访问
 * reference operator[](size_type n)   //可用数组方式访问vector元素
 *
 **************************************************************************************
 *
 * 常用函数
 *
 * bool empty();
 * size_type size();size_type max_size();size_type capacity();
 * reference front();reference back();
 * void pop_back();void push_back();
 * void clear();
 *
 *
 *
 ********************************************
 * Author: cumirror    
 * Email: tongjinooo@163.com
 ********************************************
 *
 */

#include <iostream>
#include <vector>

int main()
{
 using namespace std;
 vector<int> a(10,5);
// 数组方式
 cout<<"数组"<<endl;
 a[0]=100;
 for(int s=0;s<a.size();s++){
  cout<<a[s]<<endl;
 }
// 迭代器方式
 cout<<"迭代器"<<endl;
 vector<int>::iterator i,iend;
 i=a.begin();
 iend=a.end();
 *i=101;
 for(vector<int>::iterator j=i;j!=iend;j++){
  cout<<*j<<endl;
 }
// 元素插入,插入位置为迭代器所指之前
// 注意:有元素插入后,原来的迭代器会失效
 cout<<"插入"<<endl;
 a.insert(a.begin(),102);
// 删除时注意,它是一个半闭区间
// 也支持 erase(iterator pos)单个元素的删除
 cout<<"删除"<<endl;
 a.erase(a.begin()+4,a.begin()+6);
 for(vector<int>::iterator k=a.begin();k!=a.end();k++){
  cout<<*k<<endl;
 }
// 反向遍历访问
 cout<<"反向访问"<<endl;
 vector<int>::reverse_iterator ri;
 for(ri=a.rbegin();ri!=a.rend();ri++){
  cout<<*ri<<endl;
 }
 return 0;
}

0 0