当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

C++/VC++编程的疑问问题及解答(一)[VC/C++编程]

赞助商链接



  本文“C++/VC++编程的疑问问题及解答(一)[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

本人在用C++/VC++编程时,碰到的一些对比难以办理的问题,在经过百思得其解之后,总结了一些办理办法,但愿这些经验之谈能对大家有所帮忙.

1、[VC问题] 编辑框内的换行?

答:假定要在编辑框内输出"12345 6789".首先要设置编辑框的Multiline属性为TRUE,在输出时,除了要加,还要有.也就是说,假如要12345和6789在两行显示,需求输出12345 6789.代码以下:

m_strData = "12345
67890"; // m_strData是和编辑框关联的变量
UpdateData(FALSE); //更新控件

2、[C++尺度程序库的问题] list的迭代器能否可以随机移动?

答:由于list的内部实现是双向链表,链表就要求迭代器(指针)只能顺次早年向后(或从后向前)移动,顺次移动一个位置,因此list只定义了++和--操作符,而没有定义+、-、+=和-=等操作符.所以要想list的迭代器移动一段距离,就需求自己编程实现,用一个小循环就行了,代码以下:

#include <list>
using namespace std;
list myList;
… // myList的初始化及其他操作
list::const_iterator itList = myList.begin();
// itList向前移动len个距离
for ( int i= 0; i < len; i++ )
{
  ++itList;
}
… // 其他操作

3、[C++尺度程序库的问题] 在删除操作很多的情形下,应当挑选什么样的容器?

答:按照尺度程序库的阐明,当删除/插入只发生在容器的尾部时,应当利用vector;当删除/插入只发生在容器的首/尾部时,应当利用deque;当删除/插入操作很多,并且删除/插入不是只在容器的首尾,这时应当挑选list.

但是这里也有一个问题,在利用list时,由于其迭代器只能一次移动一个位置,在有大量删除的操作时,需求大量的迭代器移动操作,因此利用list的效率会很低;list的另一个缺陷是,占用空间要比平等容量大小的vector要大,这是由于list的实现需求指针,每个元素就多比vector中的元素多两个指针(双向链表),因此在每个元素都很小(几个字节),并且元素数目很大时,利用list就非常浪费空间了.

假如利用vector,那么删除中间元素会招致大量的元素移动操作,效率也不高,为了办理这个问题,我们可以这样作:利用vector容器,但是不直接删除元素,而是再申请一个暂时vector,将本来vector中未删除的有效元素顺次加入/保存到暂时vector,然后用这个暂时vector替换本来的vector,假照实现知道要删除的元素的个数,那么可以事前预留暂时vector的空间,再将有效元素存到暂时vector中,代码以下:

#include <vector>
using namespace std;
vector myVec;
… // myVec的初始化以及别的操作
vector tempVec;
          // 删除myVec中的num个元素
tempVec.reserve( myVec.size() - num ); // 预留暂时vector的空间
for ( ;; )
{
  将myVec中的有效元素存到tempVec中;
}
myVec.swap( tempVec ); // myVec的容量等于或稍大于myVec.size()
… // 别的操作

这只是我目前总结的几个问题,今后碰到问题随时办理,随时总结.


  以上是“C++/VC++编程的疑问问题及解答(一)[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • win8 Could not load type System.ServiceModel.Activation.HttpModule 错误办理筹划
  • 利用Javascript实现网页水印(非图片水印)
  • 在Windows7中将U盘用BitLocker加密的操作步骤
  • rs.open和conn.execute辨别
  • 不用注册机破解Photoshop CS5 每次都需求重新输入注册码
  • CSS网页筹划25个实用小本领
  • CSS3教程:利用@font-face实现本性化字体
  • 办理Windows提醒0xc000009内存错误的办法
  • PHP的chm手册打不开怎么办
  • 关于SQL中CTE(公用表表达式)(Common Table Expression)的总结
  • mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''
  • SQL Server中利用Linkserver衔接Oracle的办法
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .