#include #include #include #include #include
输出:
1、为什么set输出不是顺序的呢????
C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。map和set的树建立之时就会自动排好序,
该set中字符串按照字典序排序,所以10排在3,4,7前面。。。
2、容器erase越界问题(Linux下segmentation fault(core dumped)问题)
容器erase操作之后返回下一个iterator,所以不要在循环内部做删除操作。
一般都是由内存访问越界造成的,不管是用户态程序还是内核态程序访问越界都会出core。
在linux下一般使用gdb进行调试,避免这种问题就是在编写程序时,使用规范的逻辑,和保证健壮性的判断
小测试:
#include int main(){ int *p; *p=12; return 1;}
在程序中对非法地址p进行写操作,执行程序时显示segmentation fault。
#include int main(){ int *p, temp; temp=*p; return 1;}
在程序中对p指向地址进行
非法读操作 ,执行时显示segmentation fault。