clear与erase的原理与区别

刚才把作业的B题做完。

第一次提交WA,因为输出格式中有空格没有注意到 -.-

第二次提交WA50%,然后添加上A.clear()才正确了。


借此学习一下clear()与erase().

clear:(百度到的一篇博客,但似乎是windows编程用的。暂且复制过来。)

       功能:将一些可用的Buffer(缓冲区)清理干净。

       函数原型:

    HRESULT Clear(DWORD Count,  const D3DRECT *pRects,  DWORD Flags,  
             D3DCOLOR Color,     float Z,   DWORD Stencil  );
例: pd3dDevce->clear(0,NULL,D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER ,D3DCOLOR_ARGB(0,45,50,170),1.0F.0);

第一个参数:告诉系统有多少个矩形区域要被clear。

 

第二个参数:说明这些要被clear的矩形数组的指针。

          注:如果clear的范围是整个buffer,那么第一个参数值只要填0,第二个参数填NULL即可。

 

第三个参数:用来指定要被clear的是哪些buffer(可以是三个Buffer 的组合)。

         注:D3D里相对于窗口画面用到的buffer有三种:color buffer 、depth buffer 、stencil buffer ;color buffer 用来呈现窗口上每个pixel的颜色值,

               也就是实际见到的彩色画面,color buffer 又称Render Target;Depth Buffer又称Z Buffer;Stencil Buffer 是模板 、铸板的意思。

 

第四个参数:指定给Color Buffer的背景色;

 

第五个参数:给Depth Buffer 用的,只要pixel的Z值介于0~1,就会填入Depth Buffer;

 

第六个参数:指定给Stencil Buffer,上例中没用到Stencil buffer ,所以指定为0;


erase:

erasearray:
array 参数是要清除的 数组 变量的名称。
iterator erase( iterator pos );  // 删除pos指向的字符, 返回指向下一个字符的 迭代器 ,
iterator erase( iterator start, iterator end ); // 删除从start到end的所有字符, 返回一个 迭代器 ,指向被删除的最后一个字符的下一个位置
basic_string &erase(  size_type index = 0, size_type num = npos ); // 删除从index索引开始的num个字符, 返回*this.
参数index 和 num 有默认值, 这意味着erase()可以这样调用:只带有index以删除index后的所有字符,或者不带有任何参数以删除所有字符.

原理是向前挪移一个位置。



两者区别:
 erase可以单个清除,也可以清除一段区间里的元素。
 clear直接将所有的清除。





  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值