迭代器基本

begin()首迭代器,end()尾迭代器。对begin()解引用指向首元素的引用,end()解引用指向尾元素的下一个位置(不存在的地方)。

如果首位迭代器相等,则代表容器为空。对于迭代器,都有==的!=但是不一定有<,>,所有要避免使用大小于。

迭代器基本

下面将首单次大写

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

int main()
{
    std::string str = "Lolita is a beautiful girl";

    if(str.begin() != str.end()) //确保string非空
    {
        for(auto it = str.begin();it!=str.end()&&!isspace(*it);++it)
        {
            if(islower(*it))
                *it = toupper(*it);
        }
    }

    std::cout<<str<<std::endl;
}

迭代器基本

迭代器类型

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

int main()
{
    std::vector<std::string> strVec ;
    strVec.push_back("C++");
    strVec.push_back("是中国的");
    strVec.push_back("");
    strVec.push_back("不是日本的");

    for(auto it=strVec.cbegin();it!=strVec.cend()&&!it->empty();++it)
    {
        std::cout<<*it;
    }
    std::cout<<std::endl;
}

//std::vector<std::string>::iterator it ; //使用begin()获得
//std::vector<std::string>::const_iterator it ;//使用cbegin()获得

迭代器基本

迭代器副作用

但凡使用了迭代器的循环体,都不要向迭代器所属容器添加元素,否则会使迭代器失效;

string和vector提供了更多的迭代器运算

迭代器基本

两个迭代器相减得到的是一个有符号类型的数

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

int main()
{
    std::vector<std::string> strVec ;
    strVec.push_back("C++");
    strVec.push_back("是中国的");
    strVec.push_back("");
    strVec.push_back("不是日本的");

    std::cout<<strVec.cbegin()-strVec.cend()<<std::endl;
    std::cout<<strVec.cend()-strVec.cbegin()<<std::endl;
}

迭代器基本

二分法查找

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

int main()
{
    std::vector<unsigned> intVec ;
    for(unsigned i=0;i<100;i++)
    {
        intVec.push_back(i);
    }

    auto begin = intVec.cbegin();
    auto end = intVec.cend();
    auto mid = begin + (end-begin)/2 ;

    unsigned su = 78 ;
    while(mid != end && *mid != su)
    {
        if(su < *mid)
            end = mid ;
        else
            begin = mid+1 ;

        mid = begin + (end-begin)/2 ;
    }
    if(mid != end)
    {
        std::cout<<"已经找到"<<std::endl ;
        std::cout<<*mid<<std::endl;
    }
}

迭代器基本

原文链接: https://www.cnblogs.com/guozhikai/p/6115522.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/244810

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午12:24
下一篇 2023年2月14日 上午12:25

相关推荐