迭代器的原理和使用

iterator迭代器

概念:

  迭代器模式–提供一种方法,使之能够依序寻访某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表达方式。

  迭代器是一种行为类似智能指针的对象,而指针最常见的行为就是内容提领和成员访问。因此迭代器最重要的行为就是对operator*和 operator->进行重载。

  STL的中心思想在于:将数据容器和算法分开,彼此独立设计,最后再以一贴胶合剂(iterator)将它们撮合在一起

首先我们看一下迭代器的简单使用,再究其原理。

迭代器的使用

#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <algorithm>
using namespace std;


void test1()
{
    vector<int> v1;
    v1.push_back(4);
    v1.push_back(2);
    v1.push_back(3);
    vector<int>::iterator it = v1.begin();
    for (; it != v1.end(); ++it)
    {
        cout << *it << "";
        cout << endl;
    }
    sort(v1.begin(), v1.end());
    for (it=v1.begin(); it != v1.end(); ++it)
    {
        cout << *it << "";
        cout << endl;
    }

}
void test2()
{
    list<string> l1;
    l1.push_back("xxx");
    l1.push_back("aaa");
    l1.push_back("fxy");
    l1.push_back("hhh");
    list<string>::iterator it = l1.begin();
    while (it != l1.end())
    {
        cout << *it << " ";
        ++it;
    }
    cout << endl;
    replace(l1.begin(), l1.end(), "xxx", "yyy");
    it = l1.begin();
    while (it != l1.end())
    {
        cout << *it << " ";
        ++it;
    }
    cout << endl;
}
void test3()
{
    list<int> l2;
    l2.push_back(0);
    l2.push_back(9);
    l2.push_back(8);
    l2.push_back(7);
    list<int>::iterator it = l2.begin();
    for (; it != l2.end(); ++it)
    {
        cout << *it << endl;
    }
    list<int>::iterator xml = find(l2.begin(), l2.end(), 8);
    if (xml!=l2.end())
    {
        cout << "success "<<*xml << endl;
        *xml = 9;
    }
    else
    {
        cout << "failed" << endl;
    }
    it = l2.begin();
    for (; it != l2.end();++it)
    {
        cout << *it << endl;
    }   
}
int main()
{
    //test1();
    //test2();
    test3();
    getchar();
}



迭代器失效

迭代器失效原因
这里写图片描述

  如上图,起始时it指向10的地址,10大于3,erase删除it指向数据,此时迭代器定义的it指向无效的地址,若++it后取值越界访问,程序崩溃。
  更改后,将it=erase(it),此时erase删除10,it指针自动指向下一地址。


void test4()
{
    vector<int> v2;
    v2.push_back(10);
    v2.push_back(1);
    v2.push_back(2);
    v2.push_back(3);
    v2.push_back(4);
    v2.push_back(5);
    vector<int>::iterator it = v2.begin();
    for (; it != v2.end();)
    {
        if (*it > 3)
        {
            v2.erase(it);//迭代器无接收地址
            //正确:it=v2.erase(it);
        }
        else
            ++it;
    }
    it = v2.begin();
    for (; it != v2.end(); ++it)
    {
        cout << *it << endl;
    }
}

迭代器的原理

这是国内金融风控领域的专业级大规模个人信贷违约风险预测标准数据集,总样本量达 15 万条,是面向个人信贷业务的标准二分类预测数据集,核心业务目标为预测借款人在未来两年内是否会发生信贷违约,完整覆盖了金融机构信贷审批、风险评估、信用建模、反欺诈等全流程业务的核心特征,是风控领域落地性极强的业务数据集。一、数据集核心字段说明数据集共包含 12 个字段,剔除无业务含义的索引列后,11 个核心字段可分为标签列、个人基础信息、信贷还款行为、负债与资产、家庭情况5 大维度,完整覆盖信贷风控建模的全链路核心指标,所有字段均为国内金融行业通用的风控业务指标,业务含义清晰可解释:表格维度分类字段名字段说明数据类型核心业务价值标签列(预测目标)未来两年可能违约二分类标签,标识借款人未来两年是否会发生信贷违约0 = 不会违约(负样本),1 = 会违约(正样本)整型(0/1)模型训练的核心目标列,直接对应信贷业务的核心风险判断个人基础信息年龄借款人的实际年龄整型衡量借款人还款能力、生命周期阶段的核心基础指标月收入借款人的月均收入(单位:元)数值型衡量借款人还款来源稳定性、还款能力的核心指标信贷还款行为逾期 30-59 天的笔数借款人历史上逾期 30-59 天的信贷订单数量整型衡量借款人历史信用履约情况、短期逾期风险的核心指标逾期 60-89 天的笔数借款人历史上逾期 60-89 天的信贷订单数量整型衡量借款人中期逾期风险、信用恶化程度的核心指标逾期 90 天 + 的笔数借款人历史上逾期 90 天以上的严重逾期信贷订单数量整型衡量借款人严重违约风险、历史坏账情况的核心预警指标未偿还信贷数量借款人当前尚未结清的信贷订单总数量整型衡量借款人当前信贷敞口、还款压力的核心指标负债与资产可用信贷额度比例借款人当前可用信贷额度占总授信额度的比例(0-1 之间)浮点型衡量借款人当前信贷资金充裕度、剩余还款缓冲空间的核心指标负债率借款人的总负债占总资产 / 总收入的比例数值型衡量借款人整体负债压力、还款能力极限的核心风控指标固定资产贷款数借款人当前未结清的固定资产类贷款(如房贷、车贷)数量整型衡量借款人资产稳定性、长期还款能力的核心指标家庭情况家属数量借款人的家庭家属人数数值型衡量借款人家庭稳定性、还款责任与压力的辅助指标二、数据集核心特点样本规模充足,分布贴合真实业务数据集总样本量 15 万条,其中非违约样本 139974 条,违约样本 10026 条,违约样本占比 6.68%,完全符合国内个人信贷业务的真实低违约率分布,可训练出泛化能力、稳定性极强的风控模型,避免了小样本、样本分布失衡导致的模型过拟合问题。特征维度完整,无核心业务维度缺失数据集覆盖了风控建模全链路的核心维度,从用户的基础还款能力(年龄、收入)、历史信用履约表现(各阶段逾期笔数)、当前负债压力(负债率、未结清贷款数)、资产稳定性(固定资产贷款)到家庭还款支撑能力(家属数量),完整覆盖了信贷审批全流程的风险评估维度,无需额外补充特征即可直接用于建模。数据真实度高,适配真实业务场景数据中存在符合业务逻辑的少量缺失值(月收入缺失率约 19.8%、家属数量缺失率约 2.6%)、合理的极端值,与国内金融机构真实的用户信贷数据特征完全匹配,可有效训练模型的鲁棒性,避免了人工合成数据的理想化偏差,模型训练结果可直接落地到真实信贷业务中。特征可解释性强,业务落地门槛低所有字段均为国内金融行业通用的标准化风控指标,业务含义清晰明确,无黑箱化的衍生特征,不仅可用于机器学习建模,还可直接用于挖掘可落地的风控审批规则、风险定价规则,适配从传统人工审批到自动化智能风控的全业务场景。标签定义清晰,建模目标明确以「未来两年可能违约」作为二分类标签,是国内个人信贷业务的标准风险预测目标,标签定义清晰、标注逻辑统一,可直接用于有监督的机器学习建模,无需额外进行标签清洗与定义。三、适用分析与建模场景该数据集是金融风控领域的专业级标准数据集,可支持以下核心业务场景的落地应用:信贷违约风险预测建模基于数据集构建二分类机器学习模型(如逻辑回归、XGBoost、LightGBM、神经网络等),精准预测借款人未来两年的违约概率,为金融机构的信贷自动化审批、风险分级提供核心决策依据。风控规则挖掘与制定通过特征分箱、统计分析、IV 值计算等方式,挖掘高风险违约用户的核心特征,制定可直接落地的信贷审批规则、风险定价规则、额度授信规则,有效降低机构的信贷坏账率。个人信用评分体系构建基于数据集的核心特征,构建符合国内用户特征的个人信用评分模型,实现对用户信用水平的量化分级,支撑金融机构差异化的信贷产品设
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值