当前位置:首页
开发技术指南» 文章正文
    引言:

 ·读串口遇到一个现象    »显示摘要«
    摘要: 我做了一个程序,一台电脑用了4了串口,1、2、4串口读数据没问题,打开了串口3后cpu就长到100% 我用了串口工具同时打开4个串口,到没问题,想来是我代码的问题,大家帮我看看代码 private sub comport_oncomm(index as integer) dim inbyte() as byte dim buf$ on error resume next with comp......
    摘要: 事实上,我有两个关于对话框大小的问题: 1. 我写了一个对话框程序,本来不是最大化的(因为vc资源编辑器编辑不太方便,所以,我只选择了通常的大小),在画完对话框后(一个对话框 ,对话框上有一个listctrl,三个按钮,一个combox),现在我想让程序运行时使窗口最大化,当然,里面的控件也要按比例变化,我用了pwnd->showwindow(...sw_maxmized),但是,只......


有关stl中的set ,在遍历的时候如何删除

 
  #pragma   warning(disable:4786)  
  #include   <set>  
  #include   <iostream>  
   
  using   namespace   std   ;  
   
  typedef   set<int>   SET_INT;  
   
  int   main()   {  
      SET_INT   s1;  
     
      SET_INT::iterator   i;  
       
      s1.insert(5);      
      s1.insert(10);      
      s1.insert(15);  
     
       
      for   (i=s1.begin();i!=s1.end();i++)  
      {  
      cout   <<   "s1   has   "   <<   *i   <<   "   in   its   set."   <<   endl;  
       
      if((*i)==10)  
      {  
      s1.erase((*i));  
      }  
      }  
   
      return   0;    
  }  
   
  因为在erase的时候,顺序估计有编号,在erase后,就出问题。  
  怎么办?  
 

NO.1   作者: ming6424

C++   STL   之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector,   string,   list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让用户在STL使用过程中,并不会感到陌生。  
   
  C++   STL中标准关联容器set,   multiset,   map,   multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black   Tree)。RB树的统计性能要好于一般的平衡二叉树(有些书籍根据作者姓名,Adelson-Velskii和Landis,将其称为AVL-树),所以被STL选择作为了关联容器的内部结构。本文并不会介绍详细AVL树和RB树的实现以及他们的优劣,关于RB树的详细实现参看红黑树:   理论与实现(理论篇)。本文针对开始提出的几个问题的回答,来向大家简单介绍map和set的底层数据结构。  
   
  为何map和set的插入删除效率比用其他序列容器高?  
   
  大部分人说,很简单,因为对于关联容器来说,不需要做内存拷贝和内存移动。说对了,确实如此。map和set容器内所有元素都是以节点的方式来存储,其节点结构和链表差不多,指向父节点和子节点。结构图可能如下:  
   
                          A  
                        /   \  
                      B       C  
                    /   \   /   \  
                  D     E   F     G  
   
  因此插入的时候只需要稍做变换,把节点的指针指向新的节点就可以了。删除的时候类似,稍做变换后把指向删除节点的指针指向其他节点就OK了。这里的一切操作就是指针换来换去,和内存移动没有关系。  
   
 


 ·怎样动态改变状态栏中的显示    »显示摘要«
    摘要: 在对话框程序中加入了一个状态栏,可以显示字符串,我想让它显示变量 i 的值, 应该怎样做? hwnd h_statbar=createstatuswindow(ws_child|ws_visible|ws_border,text("状态栏"),getsafehwnd(), null); for(int i=0;i<1000;i++) ::sendmessag......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE