Vector容器

Vector容器

一、             简介

vector 是将元素置于一个动态数组中加以管理的容器

vector可以随机存取元素(支持索引值直接存取,用[]操作符或at()函数)

注:vector尾部添加或移除元素非常快,但是在中部头部插入元素或移除元素比较费时

二、             废话不多说,代码走起

1.         vector对象的初始化

使用stl提供的vector,引用头文件       #include "vector"

         //vector的初始化

         vector<int> v;

         v.push_back(1);

         v.push_back(3);

         v.push_back(5);

         v.push_back(7);

         vector<int> v2 = v;   //对象初始化

         vector<int> v3(v.begin(),v.begin() + 2); //对象初始化 值 1 3

2.         尾部添加弹出元素、获取头部元素、尾部元素

         vector<int> v1;

         cout<< "length : " <<v1.size() <<endl; //获取vector的大小

         v1.push_back(1); //尾部添加数据 1

         v1.push_back(3); //尾部添加数据 3

         v1.push_back(5); //尾部添加数据 5

         cout<< "length : " <<v1.size() <<endl;//获取vector的大小

         v1.front();//获取头部元素

         v1.back();//获取尾部元素

         //循环vector

         while(v1.size() > 0)

         {

                   cout << "尾部元素" << v1.back() <<endl; //打印每个元素

                   v1.pop_back();//删除尾部元素

         }

         //修改头部元素

         //函数返回值当左值,应该返回一个引用

         v1.front() = 12;

         v1.back() = 78;

         //再次循环vector

         while(v1.size() > 0)

         {

                   cout << "尾部元素" << v1.back() <<endl; //打印每个元素

                   v1.pop_back();//删除尾部元素

         }

3.         vector的遍历:通过数组的方式

         //遍历vector 通过数组的方式

         vector<int> v1(10); //特别提示:提前把内存准备好

         //给vector赋值

         for ( int i = 0 ; i < 10 ; i++ )

         {

                   v1[i] = i + 1;

         }

         for (int j = 0 ; j < 10 ; j++)

         {

                   printf("%d ",v1[j]);

                  }

push_back强化

         vector<int> v1(10);//特别提示:提前把内存准备好,初始化vector个元素默认值为0

         v1.push_back(100);

         v1.push_back(200);

         cout<< "size:" << v1.size() <<endl; //结果:12

                  //push_back总结:在vecotr元素的后面添加元素

4.         vector的遍历:通过迭代器的方式

         vector<int> v1(10); //特别提示:提前把内存准备好

         //给vector赋值

         for ( int i = 0 ; i < 10 ; i++ )

         {

                   v1[i] = i + 1;

         }

         //正向遍历

         for(vector<int>::iterator it = v1.begin() ; it != v1.end() ; it++)

         {

                   cout << *it << " ";

         }

         //逆序遍历

         for(vector<int>::reverse_iterator rit = v1.rbegin() ; rit != v1.rend() ; rit++)

         {

                   cout << *rit << " ";

                  }

迭代器的种类

只读迭代器,如

vector<int>::const_iterator 与 vector<int>::const_reverse_iterator

5.         vector的删除操作

     vector<int> v1(10); //特别提示:提前把内存准备好

     //给vector赋值

     for ( int i = 0 ; i < 10 ; i++ )

     {

              v1[i] = i + 1;

     }

//区间删除

v1.erase(v1.begin() , v1.begin() + 3);

for(vector<int>::iterator it = v1.begin() ; it != v1.end() ; it++)

         {

                   cout << *it << " ";

         }

//根据元素位置 指定位置删除

v1erase(v1.begin());                  //在头部删除一个元素

//根据元素的值

v1[1] = 2;

v1[3] = 2;

for( vector<int>::iterator it = v1.begin(); it != v1.end();)  //注:it++删除

{

         if(*it == 2)

         {

                   v1.erase(it);              //当删除迭代器所指向的元素的时候,erase函数会让it自动下移

         }

         else

         {

                   it ++ ;

         }

}

6.         vector数据的插入

     vector<int> v1(10); //特别提示:提前把内存准备好

     //给vector赋值

     for ( int i = 0 ; i < 10 ; i++ )

     {

              v1[i] = i + 1;

     }

v1.insert(v1.begin() , 100);

v1.insert(v1.end() , 200);

 

posted @ 2016-10-08 20:41  Zohar  阅读(227)  评论(0编辑  收藏  举报