c++ 修改stl set中的元素
2015-11-20 16:22
477 查看
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\n",it->b); } for(;it!=ed;it++) { it->b = 11; printf("%d\n",it->b); } return 0; }
相关文章推荐
- c++实现读写文件
- c语言%.*s是什么
- C++ 带空格的字符串输入
- c++实现智能指针
- c++面试——数据库基本知识
- C++中public,protected,private访问
- c++图像处理:24位真彩图颜色变换
- C语言开发总结(一)
- C++中智能指针的设计和使用
- [转]C++ 智能指针详解
- C++ const 常量和常指针
- 深入理解C++中的mutable关键字
- C++ 静态常量
- C++打开一个网页
- 用c语言实现strncmp,strncat,memset, memcmp
- C语言输出规定长度的整数,不够位数前面补零
- Lowest Common Ancestor of a Binary Tree
- Binary Tree Maximum Path Sum
- C语言标准库函数qsort
- c语言中关键字static的使用分析