vector(2)

vector(2)

--雨竹清风

一、元素的遍历

元素的遍历方式有两种:第一种是像数组一样遍历。

例如:

int Array[] = {1,2,3,4,5,7};

   vector<int> c(Array, Array+3);

   for (int i = 0; i < c.size(); i++)

   {

      cout<<c[i]<<" ";

   }

第二种是使用迭代器it,通过*it来访问容器中的值。

vector<int>::iterator it = c.begin();

for (it; it != c.end(); it++)//end()指向的最后一个元素的下一个位置

{

   cout<<*it<<" ";

}

二、容器的插入

对于插入来说要比在尾端插入费时,因为插入的位置是不固定的,需要移动元素,以空出所插入的位置来将数据插入进去。所以费时的多。

插入使用的是insert()函数。

例如:

对于上例所定义的vector可以在中间3个位置插入一个元素14

v.insert(v.begin() + 3, 14);

也可以在首位置插入一个元素12

v.insert(v.begin(),12);

也可以在末尾置插入一个元素16

v.insert(v.end(),16);

三、vector的删除

vector的删除使用的是erase()函数,它有两种形式:erase(pos);erase(first,last);

我们也可以使用clear();函数来清空vector。实际上clear()函数是调用了erase()函数。

例如:建立一个MyAnimal类,类中对构造函数进行重载。添加几个此类的对象,我们需要用vector保存的是对象的地址,所以设置vector的类型为MyAnimal*对于删除,首先删除的是指针指向的对象,然后删除其地址。

class MyAnimal

{

public:

   MyAnimal(void);

   MyAnimal(char *name, int age){ this->name = name;

   this->age = age;

};

   ~MyAnimal(void);

public:

   char *name;

   int age;

};

//

MyAnimal *pDog = new MyAnimal("dog",1);

MyAnimal *pMonkey = new MyAnimal("monkey",2);

MyAnimal *pChicken = new MyAnimal("chicken",3);

vector<MyAnimal*> v;

v.push_back(pDog);

v.push_back(pMonkey);

v.push_back(pChicken);

 

delete pMonkey;//物理删除pMonkey所指的对象

v.erase(v.begin()+1);//pMonkey的地址删除

vector<MyAnimal*>::iterator it = v.begin();

for (it; it != v.end(); ++it)

{

   cout<<(*it)->name<<" "<<(*it)->age<<endl;

}

v.clear();//清空

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值