容器和算法2——C++(49)

迭代器由来

  • 在上节课虽然我们成功地使用了向量,但是我们还是把它按照数组的形式进行操作的,如果我们创建的容器不支持使用数组下标来进行操作的话,程序就很难运行。这就需要使用迭代器。
  • 使用迭代器,当在程序里改用另一种容器的时候就不需要修改那么多的代码了。

迭代器

  • 迭代器相当于是一个容器智能指针。

  • 定义

      std::vector <std::string>::inerator iter = names.begin();
      //以容器类型为string类型,迭代器名称为 iter,容器名称为 names 为例。
    
  • names.begin()

  • names.end();

  • 迭代器的价值体现在它可以和所有的容器配合使用:使用迭代去去访问
    容器元素的算法可以和任何一种容器配合使用。

算法

  • C++标准库里面有许多很好用的算法。要使用这个算法,只需要调用相关的库就可以了。
  •   #include <algorithm>
      std::sort(beginIterator,endIterator);
      //以sort方法为例
    

代码实现

1/2 迭代器程序

#include <iostream>
#include <string>
#include <vector>
//迭代器iterator是个所谓的智能指针
int main()
{
    std::vector<std::string> names;//定义一个字符串型的向量容器
    names.push_back("小聪");//往里面添加东西 
    names.push_back("小笨");
    
    std::vector<std::string>::iterator iter = names.begin();//定义迭代器iter为names的开始位置 
    //names.begin()调用的是names向量容器的第一个元素 
    while( iter != names.end())//names.ends()为names的结束位置 
    {
        std::cout << *iter << "\n";//解引用,输出值 
        ++iter; 
    } 
    
    std::cout << "size: "<<names.size() << std::endl;
    return 0;
} 

2/2 算法实现

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

//迭代器iterator是个所谓的智能指针
int main()
{
    std::vector<std::string> names;//定义一个字符串型的向量容器
    names.push_back("clearlove");//往里面添加东西
    names.push_back("betty");
    names.push_back("uzi");
    names.push_back("deft");
    names.push_back("meiko");

    std::vector<std::string>::iterator iter = names.begin();//定义迭代器iter为names的开始位置
    std::sort(names.begin(),names.end());
    //names.begin()调用的是names向量容器的第一个元素
    while( iter != names.end())//names.ends()为names的结束位置
    {
        std::cout << *iter << "\n";//解引用,输出值
        ++iter;
    }

    std::cout << "size: "<<names.size() << std::endl;
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

la via

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值