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;
    }
  • 相关阅读:
    struts2基础
    hibernate框架基础
    Django的模板层
    HBuilder无法连接夜神模拟器的解决办法
    Django的视图层
    Django的路由层
    Django简介
    http协议
    web应用
    Mongodb之增删改查
  • 原文地址:https://www.cnblogs.com/zendu/p/4981191.html
Copyright © 2011-2022 走看看