C++与C语言函数ee.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++中的find函数 泛型算法的 find: 在非string类型的容器里,可以直接找出所对应的元素. find函数需要几个参数:迭代器,下标值,所要找的元素 vectorint a; find(a.begin(),a.end(),1); 这句话就表示从a的头开始一直到尾,找到第一个值为1的元素,返回的是一个指向该元素的迭代器。 find在string容器中用途比较广: find_first_of,find_last_of,find_not_first_of,find_not_last_of等等 在string类型中,需要的参数也有迭代器,下标和要找的字符串,这里要注意,是字符串,不能查找单个字符。 string a; find(a.begin(),a.end(),asd) 这句话就是说,在a中找到第一个存在子串与asd子串相等的字符串的首地址。返回指向该字符串首地址的迭代器。 find_last_of则是找到最后一个, find_not_first_of是找出第一个不与“asd”相等的字符串的首地址这是给编译器用的参数设置,有关结构体字节对齐方式设置,?#pragma pack是指定数据在内存中的对齐方式。 #pragma pack (n)????????作用:C编译器将按照n个字节对齐。 #pragma pack ()?????????作用:取消自定义字节对齐方式。 #pragma ?pack (push,1)??作用:是指把原来对齐方式设置压栈,并设新的对齐方式设置为一个字节对齐 #pragma pack(pop)???????作用:恢复对齐状态 因此可见,加入push和pop可以使对齐恢复到原来状态,而不是编译器默认,可以说后者更优,但是很多时候两者差别不大 如: #pragma pack(push) //保存对齐状态 #pragma pack(4)//设定为4字节对齐相当于 #pragma ?pack (push,4)??#pragma? pack(1)?????作用:调整结构体的边界对齐,让其以一个字节对齐;使结构体按1字节方式对齐 #pragma? pack () 例如: #pragma pack(1) struct sample { char a; double b; }; #pragma pack() 注:若不用#pragma pack(1)和#pragma pack()括起来,则sample按编译器默认方式对齐(成员中size最大的那个)。即按8字节(double)对齐,则sizeof(sample)==16.成员char a占了8个字节(其中7个是空字节);若用#pragma pack(1),则sample按1字节方式对齐sizeof(sample)==9.(无空字节),比较节省空间啦,有些场和还可使结构体更易于控制。 应用实例 在网络协议编程中,经常会处理不同协议的数据报文。一种方法是通过指针偏移的方法来得到各种信息,但这样做不仅编程复杂,而且一旦协议有变化,程序修改起来也比较麻烦。在了解了编译器对结构空间的分配原则之后,我们完全可以利用这一特性定义自己的协议结构,通过访问结构的成员来获取各种信息。这样做,不仅简化了编程,而且即使协议发生变化,我们也只需修改协议结构的定义即可,其它程序无需修改,省时省力。下面以TCP协议首部为例,说明如何定义协议结构。其协议结构定义如下:?#pragma?pack(1)?// 按照1字节方式进行对齐 struct?TCPHEADER? { ?????short?SrcPort;?// 16位源端口号 ?????short?DstPort;?// 16位目的端口号 ?????int?SerialNo;?// 32位序列号 ?????int?AckNo;?// 32位确认号 ?????unsigned?char?HaderLen?:?4;?// 4位首部长度 ?????unsigned?char?Reserved1?:?4;?// 保留6位中的4位 ?????unsigned?char?Reserved2?:?2;?// 保留6位中的2位 ?????unsigned?char?URG?:?1; ?????unsigned?char?ACK?:?1; ?????unsigned?char?PSH?:?1; ?????unsigned?char?RST?:?1; ?????unsigned?char?SYN?:?1; ?????unsigned?char?FIN?:?1; ?????short?WindowSize;?// 16位窗口大小 ?????short?TcpChkSum;?// 16位TCP检验和 ?????short?UrgentPo

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档