zoukankan      html  css  js  c++  java
  • c++ 修改stl set中的元素

    set的迭代器it有const修饰符,那么对它元素的修改就必然不能成功了。但是有时候遇到要修改stl set元素的问题,这个问题一般的解决方法是先erase这个元素,然后再insert,这样效率很低,所以得找更有效的方法,开始的时候编译始终通不过。如果利用const_cast(*it)把it映射成一个引用的对象,那么就可以对它进行修改了。更加通用的方法如下: 
    
    
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    #include <map>
    #include <set>
    using namespace std;
    
    class node
    {
    public  :
        int a ;
        int b;
        bool operator<(const node &t)const
        {
            return a < t.a;
        }
    };
    
    multiset<node>ss;
    
    int main()
    {
        node a,b,c;
        ss.insert(a);
        ss.insert(b);
        ss.insert(c);
        multiset<node>::iterator it = ss.begin(),ed = ss.end();
        for(;it!=ed;it++)
        {
            const_cast<node*>(&(*it))->b = 10;
            printf("%d
    ",it->b);
        }
        for(;it!=ed;it++)
        {
            it->b = 11;
            printf("%d
    ",it->b);
        }
        return 0;
    }
  • 相关阅读:
    快速排序
    Web总结
    浏览器兼容性问题汇总
    AngularJS理论基础
    预处器的对比——Sass、LESS.
    js事件知识整理
    Java script基础
    重拾nodeJs
    全国城市三级联动
    js 获取地址栏参数
  • 原文地址:https://www.cnblogs.com/zendu/p/4981191.html
Copyright © 2011-2022 走看看