﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-成长中的C++-随笔分类-C++</title><link>http://www.cppblog.com/xuejzt/category/8402.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 06 Jun 2009 05:50:33 GMT</lastBuildDate><pubDate>Sat, 06 Jun 2009 05:50:33 GMT</pubDate><ttl>60</ttl><item><title>C语言连接Mysql数据库</title><link>http://www.cppblog.com/xuejzt/archive/2009/05/23/85540.html</link><dc:creator>xuejzt</dc:creator><author>xuejzt</author><pubDate>Sat, 23 May 2009 13:05:00 GMT</pubDate><guid>http://www.cppblog.com/xuejzt/archive/2009/05/23/85540.html</guid><wfw:comment>http://www.cppblog.com/xuejzt/comments/85540.html</wfw:comment><comments>http://www.cppblog.com/xuejzt/archive/2009/05/23/85540.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/xuejzt/comments/commentRss/85540.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuejzt/services/trackbacks/85540.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">mysql.h</span><span style="color: #000000;">&gt;</span><span style="color: #008000;">/*</span><span style="color: #008000;">注意要包含这个头文件</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdlib.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">/*</span><span style="color: #008000;">定义了一些数据库连接需要的宏</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;HOST&nbsp;"localhost"</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;USERNAME&nbsp;"ABitNo"</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;PASSWORD&nbsp;"ABitNo"</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;10</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;DATABASE&nbsp;"abitno"</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;11</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;12</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">/*</span><span style="color: #008000;">这个函数用来执行传入的sql語句</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;13</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;exe_sql(</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;sql)&nbsp;{<br></span><span style="color: #008080;">&nbsp;14</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;MYSQL&nbsp;my_connection;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">这是一个数据库连接</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;res;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">执行sql語句后的返回标志</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;17</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">初始化mysql连接my_connection</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;mysql_init(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">my_connection);<br></span><span style="color: #008080;">&nbsp;20</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">这里就是用了mysql.h里的一个函数，用我们之前定义的那些宏建立mysql连接，并<br></span><span style="color: #008080;">&nbsp;22</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;返回一个值，返回不为空证明连接是成功的</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(mysql_real_connect(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">my_connection,&nbsp;HOST,&nbsp;USERNAME,&nbsp;PASSWORD,&nbsp;DATABASE,<br></span><span style="color: #008080;">&nbsp;24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;NULL,&nbsp;CLIENT_FOUND_ROWS))&nbsp;{</span><span style="color: #008000;">/*</span><span style="color: #008000;">连接成功</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;25</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">数据库执行exe_sql连接成功！\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">&nbsp;27</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">这句话是设置查询编码为utf8，这样支持中文</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_query(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">my_connection,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">set&nbsp;names&nbsp;utf8</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">&nbsp;30</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">下面这句话就是用mysql_query函数来执行我们刚刚传入的sql語句，<br></span><span style="color: #008080;">&nbsp;32</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这会返回一个int值，如果为0，证明語句执行成功</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mysql_query(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">my_connection,&nbsp;sql);<br></span><span style="color: #008080;">&nbsp;34</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(res)&nbsp;{</span><span style="color: #008000;">/*</span><span style="color: #008000;">现在就代表执行失败了</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">Error：&nbsp;mysql_query&nbsp;!\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">&nbsp;37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">不要忘了关闭连接</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_close(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">my_connection);<br></span><span style="color: #008080;">&nbsp;39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;{</span><span style="color: #008000;">/*</span><span style="color: #008000;">现在就代表执行成功了</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">mysql_affected_rows会返回执行sql后影响的行数</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;行受到影响！\n\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;mysql_affected_rows(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">my_connection));<br></span><span style="color: #008080;">&nbsp;42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">不要忘了关闭连接</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_close(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">my_connection);<br></span><span style="color: #008080;">&nbsp;44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">&nbsp;45</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;{<br></span><span style="color: #008080;">&nbsp;47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">数据库连接失败</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">数据库执行exe_sql连接失败！\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">&nbsp;49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">&nbsp;50</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">&nbsp;51</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;52</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">/*</span><span style="color: #008000;">这个函数用来执行传入的sql語句，并打印出查询結果</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;53</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;query_sql(</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;sql)&nbsp;{<br></span><span style="color: #008080;">&nbsp;54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;MYSQL&nbsp;my_connection;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">这是一个数据库连接</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;res;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">执行sql語句后的返回标志</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;MYSQL_RES&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">res_ptr;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">指向查询结果的指针</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;MYSQL_FIELD&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">field;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">字段结构指针</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;MYSQL_ROW&nbsp;result_row;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">按行返回的查询信息</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;59</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;60</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;row,&nbsp;column;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">查询返回的行数和列数</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;61</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">只是控制循环的两个变量</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;62</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;63</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">初始化mysql连接my_connection</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;64</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;mysql_init(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">my_connection);<br></span><span style="color: #008080;">&nbsp;65</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;66</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">这里就是用了mysql.h里的一个函数，用我们之前定义的那些宏建立mysql连接，并<br></span><span style="color: #008080;">&nbsp;67</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;返回一个值，返回不为空证明连接是成功的</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;68</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(mysql_real_connect(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">my_connection,&nbsp;HOST,&nbsp;USERNAME,&nbsp;PASSWORD,&nbsp;DATABASE,<br></span><span style="color: #008080;">&nbsp;69</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;NULL,&nbsp;CLIENT_FOUND_ROWS))&nbsp;{</span><span style="color: #008000;">/*</span><span style="color: #008000;">Connection&nbsp;success</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;70</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;71</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">数据库查询query_sql连接成功！\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">&nbsp;72</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;73</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">这句话是设置查询编码为utf8，这样支持中文</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;74</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_query(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">my_connection,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">set&nbsp;names&nbsp;utf8</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">&nbsp;75</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;76</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">下面这句话就是用mysql_query函数来执行我们刚刚传入的sql語句，<br></span><span style="color: #008080;">&nbsp;77</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这会返回一个int值，如果为0，证明語句执行成功</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;78</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mysql_query(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">my_connection,&nbsp;sql);<br></span><span style="color: #008080;">&nbsp;79</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;80</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(res)&nbsp;{&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">现在就代表执行失败了</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;81</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">Error：&nbsp;mysql_query&nbsp;!\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">&nbsp;82</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">不要忘了关闭连接</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;83</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_close(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">my_connection);<br></span><span style="color: #008080;">&nbsp;84</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;{&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">现在就代表执行成功了</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;85</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">将查询的結果给res_ptr</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;86</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res_ptr&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mysql_store_result(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">my_connection);<br></span><span style="color: #008080;">&nbsp;87</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;88</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">如果结果不为空，就把结果print</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;89</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(res_ptr)&nbsp;{<br></span><span style="color: #008080;">&nbsp;90</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">取得結果的行数和</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;91</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;column&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mysql_num_fields(res_ptr);<br></span><span style="color: #008080;">&nbsp;92</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;row&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mysql_num_rows(res_ptr)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;93</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">查询到&nbsp;%lu&nbsp;行&nbsp;\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;row);<br></span><span style="color: #008080;">&nbsp;94</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;95</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">输出結果的字段名</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;96</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;field&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mysql_fetch_field(res_ptr);&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&nbsp;97</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%s\t</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;field</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">name);<br></span><span style="color: #008080;">&nbsp;98</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">&nbsp;99</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">100</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">按行输出結果</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">101</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;row;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)&nbsp;{<br></span><span style="color: #008080;">102</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result_row&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mysql_fetch_row(res_ptr);<br></span><span style="color: #008080;">103</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;column;&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">104</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%s\t</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;result_row[j]);<br></span><span style="color: #008080;">105</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">106</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">107</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">108</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">109</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">110</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">不要忘了关闭连接</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">111</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_close(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">my_connection);<br></span><span style="color: #008080;">112</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">113</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">114</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">115</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">116</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;argc,&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">argv[])&nbsp;{<br></span><span style="color: #008080;">117</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">测试下向里面插入数据</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">118</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">exe&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">insert&nbsp;into&nbsp;abitno&nbsp;values('ABitNo','http://ABitNo.LinPie.com');</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br></span><span style="color: #008080;">119</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;exe_sql(exe);<br></span><span style="color: #008080;">120</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">121</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">测试下查询</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">122</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">query&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">select&nbsp;*&nbsp;from&nbsp;abitno;</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br></span><span style="color: #008080;">123</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;query_sql(query);<br></span><span style="color: #008080;">124</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">125</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">126</span>&nbsp;<span style="color: #000000;">}<br><br>转载自：<br>http://abitno.linpie.com/linux-c-connect-mysql.html
<br></span></div>
<br>  <img src ="http://www.cppblog.com/xuejzt/aggbug/85540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuejzt/" target="_blank">xuejzt</a> 2009-05-23 21:05 <a href="http://www.cppblog.com/xuejzt/archive/2009/05/23/85540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>回家了～～</title><link>http://www.cppblog.com/xuejzt/archive/2009/05/22/85373.html</link><dc:creator>xuejzt</dc:creator><author>xuejzt</author><pubDate>Fri, 22 May 2009 05:19:00 GMT</pubDate><guid>http://www.cppblog.com/xuejzt/archive/2009/05/22/85373.html</guid><wfw:comment>http://www.cppblog.com/xuejzt/comments/85373.html</wfw:comment><comments>http://www.cppblog.com/xuejzt/archive/2009/05/22/85373.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xuejzt/comments/commentRss/85373.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuejzt/services/trackbacks/85373.html</trackback:ping><description><![CDATA[已经大概有半年没有登录我的这个博客了，不是因为我懒，只是自己一直在徘徊。我一直在寻找一个可以让我长久的留下来写博客的地方，现在我回来了！！我现在有两个博客，一个我想用来记录我自己的生活，情感，感悟，以及对人生的一些看法及认识，起名为&#8220;我就在这里&#8221;，现在我把这个地方选在了微软的windows live里<a title="xuej's blog" href="http://atengzt.spaces.live.com/default.aspx" target=_blank><strong>xuej's blog</strong></a>. 另外一个就是这个地方，我要用来记录我在技术学习中的一些体会，还有一些总结，以及看书的笔记。我很喜欢这个博客，没有多少广告，界面干净整洁，代码可以高亮显示，常用的工具都列在了工具栏里很方便使用。<br>马上要论文答辩了，论文写作还有个关键的环节就完成了，等答辩结束了，我就会回来。<br><br>
<img src ="http://www.cppblog.com/xuejzt/aggbug/85373.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuejzt/" target="_blank">xuejzt</a> 2009-05-22 13:19 <a href="http://www.cppblog.com/xuejzt/archive/2009/05/22/85373.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用迭代器代替索引</title><link>http://www.cppblog.com/xuejzt/archive/2008/10/04/63234.html</link><dc:creator>xuejzt</dc:creator><author>xuejzt</author><pubDate>Sat, 04 Oct 2008 07:13:00 GMT</pubDate><guid>http://www.cppblog.com/xuejzt/archive/2008/10/04/63234.html</guid><wfw:comment>http://www.cppblog.com/xuejzt/comments/63234.html</wfw:comment><comments>http://www.cppblog.com/xuejzt/archive/2008/10/04/63234.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xuejzt/comments/commentRss/63234.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuejzt/services/trackbacks/63234.html</trackback:ping><description><![CDATA[/**<br>&nbsp;* Accelerated C++ 笔记<br>**/<br>每一个标准容器，例如向量，都定义了两种相关的迭代器类型：<br>container-type::const_iterator<br>container-type::iterator<br>这里container-type是诸如vector&lt;Student_info&gt;这样的容器类型。<br>如果我们想用一个迭代起来修改存储在容器中的值，就使用iterator类型；如果我们仅仅需要读操作，那么就使用const_iterator类型。<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008000;">//</span><span style="color: #008000;">索引方式</span><span style="color: #008000;"><br></span><span style="color: #0000ff;">for</span><span style="color: #000000;">(vector</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Student_info</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::size_type&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;students.end();&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;students[i].name&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;endl;<br><br></span><span style="color: #008000;">//</span><span style="color: #008000;">迭代器</span><span style="color: #008000;"><br></span><span style="color: #0000ff;">for</span><span style="color: #000000;">(vector</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Student_info</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::const_iterator&nbsp;iter&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;students.begin();&nbsp;iter&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;students.end();&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">iter){<br>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">*</span><span style="color: #000000;">iter).name&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">或者&nbsp;cout&nbsp;&lt;&lt;&nbsp;iter-&gt;name&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;"><br></span><span style="color: #000000;">}</span></div>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008000;">//</span><span style="color: #008000;">用迭代器代替索引：效率可能不高</span><span style="color: #008000;"><br></span><span style="color: #000000;">vector</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Student_info</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;extract_fails(vector</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Student_info</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;students)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;vector</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Student_info</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;fail;<br>&nbsp;&nbsp;&nbsp;&nbsp;vector</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Student_info</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::iterator&nbsp;iter&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;students.begin();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(iter&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;students.end()){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(fgrade(</span><span style="color: #000000;">*</span><span style="color: #000000;">iter)){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fail.push_back(</span><span style="color: #000000;">*</span><span style="color: #000000;">iter);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iter&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;students.erase(iter);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">iter;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;fail;<br>}</span></div>
<br><br> <img src ="http://www.cppblog.com/xuejzt/aggbug/63234.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuejzt/" target="_blank">xuejzt</a> 2008-10-04 15:13 <a href="http://www.cppblog.com/xuejzt/archive/2008/10/04/63234.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>三种函数参数</title><link>http://www.cppblog.com/xuejzt/archive/2008/10/04/63232.html</link><dc:creator>xuejzt</dc:creator><author>xuejzt</author><pubDate>Sat, 04 Oct 2008 07:07:00 GMT</pubDate><guid>http://www.cppblog.com/xuejzt/archive/2008/10/04/63232.html</guid><wfw:comment>http://www.cppblog.com/xuejzt/comments/63232.html</wfw:comment><comments>http://www.cppblog.com/xuejzt/archive/2008/10/04/63232.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xuejzt/comments/commentRss/63232.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuejzt/services/trackbacks/63232.html</trackback:ping><description><![CDATA[/**<br>&nbsp;* Accelerated C++ 笔记<br>**/<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008000;">//</span><span style="color: #008000;">计算一个vector&lt;double&gt;类型的变量的中值<br></span><span style="color: #008000;">//</span><span style="color: #008000;">值得注意的是，掉哟跟函数时整个vector参数都会被复制</span><span style="color: #008000;"><br></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;median(vector</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;vec)&nbsp; </span><span style="color: #008000;">//</span><span style="color: #008000;">不改变向量本身</span><span style="color: #008000;"><br></span><span style="color: #000000;">{<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;vector</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::size_type&nbsp;vec_sz;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;vec_sz&nbsp;size&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;vec.size();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(size&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">throw</span><span style="color: #000000;">&nbsp;domain_error(</span><span style="color: #000000;">"</span><span style="color: #000000;">median&nbsp;of&nbsp;an&nbsp;empty&nbsp;vector</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;sort(vec.begin(),&nbsp;vec.end());<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;vec_sz&nbsp;mid&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;size</span><span style="color: #000000;">/</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;size&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;(vec[mid]</span><span style="color: #000000;">+</span><span style="color: #000000;">vec[mid</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">])&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;:&nbsp;vec[mid];<br>}<br><br></span><span style="color: #008000;">//</span><span style="color: #008000;">根据期中，期末考试成绩和保存家庭作业的向量来计算学生的总成绩<br></span><span style="color: #008000;">//</span><span style="color: #008000;">真个函数不用复制它的参数，因为median已经为我们完成了这个工作</span><span style="color: #008000;"><br></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;grade(</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;midterm,&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;final,&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;vector</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;hw)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(hw.size()&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">throw</span><span style="color: #000000;">&nbsp;domain_error(</span><span style="color: #000000;">"</span><span style="color: #000000;">student&nbsp;has&nbsp;done&nbsp;no&nbsp;homework</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;grade(midterm,&nbsp;final,&nbsp;median(hw));<br>}<br></span><span style="color: #008000;">//</span><span style="color: #008000;">函数重载</span><span style="color: #008000;"><br></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;grade(</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;midterm,&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;final,&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;homework)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0.2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;midterm&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">　</span><span style="color: #000000;">0.4</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;final&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0.4</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;homework;<br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;vector&lt;double&gt;&amp;这种类型被成为"对参数类型为double的向量常量的引用"<br>&nbsp;&nbsp;&nbsp;&nbsp;vector&lt;double&gt;&nbsp;homework;<br>&nbsp;&nbsp;&nbsp;&nbsp;vector&lt;double&gt;&amp;&nbsp;hw&nbsp;=&nbsp;homework;&nbsp;//hw是homework的一个替代名,<br>&nbsp;&nbsp;&nbsp;&nbsp;//对hw的任何操作都等价于对homework的操作<br><br>&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;vector&lt;double&gt;&amp;&nbsp;chw&nbsp;=&nbsp;homework;&nbsp;//chw是homework的一个替代名，<br>&nbsp;&nbsp;&nbsp;&nbsp;//const确保了我们将不会对chw的任何可能改变它的值的操作<br><br>&nbsp;&nbsp;&nbsp;&nbsp;vector&lt;double&gt;&amp;&nbsp;hw1&nbsp;=&nbsp;hw;&nbsp;//同hw等价，是homework的一个替代名<br>&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;vector&lt;double&gt;&amp;&nbsp;chw1&nbsp;=&nbsp;chw;&nbsp;//同chw等价，不允许写访问homework的一个替代名<br>*</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br><br><br></span><span style="color: #008000;">//</span><span style="color: #008000;">从输入流中将家庭作业的成绩读入到一个vector&lt;double&gt;中</span><span style="color: #008000;"><br></span><span style="color: #000000;">istream&nbsp;read_hw(istream</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">,&nbsp;vector</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;hw)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #0000ff;">in</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hw.clear();&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">清除原先内容</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;x;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;x)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hw.push_back(x);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">清除流以使输入动作对于下一个学生有效</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">.clear();<br>&nbsp;&nbsp;&nbsp;&nbsp;｝<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">;<br>}</span></div>
<br><br><img src ="http://www.cppblog.com/xuejzt/aggbug/63232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuejzt/" target="_blank">xuejzt</a> 2008-10-04 15:07 <a href="http://www.cppblog.com/xuejzt/archive/2008/10/04/63232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>list容器</title><link>http://www.cppblog.com/xuejzt/archive/2008/10/04/63231.html</link><dc:creator>xuejzt</dc:creator><author>xuejzt</author><pubDate>Sat, 04 Oct 2008 07:03:00 GMT</pubDate><guid>http://www.cppblog.com/xuejzt/archive/2008/10/04/63231.html</guid><wfw:comment>http://www.cppblog.com/xuejzt/comments/63231.html</wfw:comment><comments>http://www.cppblog.com/xuejzt/archive/2008/10/04/63231.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xuejzt/comments/commentRss/63231.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuejzt/services/trackbacks/63231.html</trackback:ping><description><![CDATA[/**<br>&nbsp;* Accelerated C++ 笔记<br>**/<br>list容器相当于数据结构中的链表，vector容器相当于顺序表。<br>vector是为快速随机访问而被优化的，同样地，优化了的list类型，可以让我们在容器的任何位置快速的插入和删除元素。<br>在vector内部插入或删除元素，为了保持快速随机存取的特性，必须移动位于被插入或删除的元素后面的所有<br>元素。移动元素意味着，时间复杂度为向量元素个数的二次方。<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008000;">//</span><span style="color: #008000;">用list代替vector：主要是因为插入和删除操作太多</span><span style="color: #008000;"><br></span><span style="color: #000000;">list</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Student_info</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;extract_fails(list</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Student_info</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;students)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;list</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Student_info</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;fail;<br>&nbsp;&nbsp;&nbsp;&nbsp;list</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Student_info</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::iterator&nbsp;iter&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;students.begin();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(iter&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;students.end()){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(fgrade(</span><span style="color: #000000;">*</span><span style="color: #000000;">iter)){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fail.push_back(</span><span style="color: #000000;">*</span><span style="color: #000000;">iter);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iter&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;students.erase(iter);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">iter;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;fail;<br>}</span></div>
list容器的迭代器不支持完全随机访问，所以我们就不能用标准库中sort函数对它进行排序。<br>对此，list提供了自己的sort成员函数，这个函数使用了 一个优化的算法来为存储在list中的数值排序。<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">list</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Student_info</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;students<br>students.sort(compare);</span><span style="color: #008000;">//</span><span style="color: #008000;">compare函数可以自己定义</span></div>
<br><br><br><img src ="http://www.cppblog.com/xuejzt/aggbug/63231.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuejzt/" target="_blank">xuejzt</a> 2008-10-04 15:03 <a href="http://www.cppblog.com/xuejzt/archive/2008/10/04/63231.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sort函数</title><link>http://www.cppblog.com/xuejzt/archive/2008/10/04/63229.html</link><dc:creator>xuejzt</dc:creator><author>xuejzt</author><pubDate>Sat, 04 Oct 2008 06:57:00 GMT</pubDate><guid>http://www.cppblog.com/xuejzt/archive/2008/10/04/63229.html</guid><wfw:comment>http://www.cppblog.com/xuejzt/comments/63229.html</wfw:comment><comments>http://www.cppblog.com/xuejzt/archive/2008/10/04/63229.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/xuejzt/comments/commentRss/63229.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuejzt/services/trackbacks/63229.html</trackback:ping><description><![CDATA[/**<br>&nbsp; * Accelerated C++ 笔记<br>&nbsp; **/<br>sort()函数定义在头文件&lt;algorithm&gt;中，它把容器中的数据重新排序成非递减序列。我们之所以用非递减而不用递增是因为，容器中的某些数据元素可能会与其他元素相等。<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;x;<br>vector</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;numbers;<br>typedef&nbsp;vector</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::size_type&nbsp;vec_size;<br>vec_sz&nbsp;size&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;numbers.size();<br><br></span><span style="color: #0000ff;">while</span><span style="color: #000000;">(cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;x)<br>&nbsp;&nbsp;&nbsp;&nbsp;numbers.push_back(x);<br>sort(numbers.begin(),&nbsp;numbers.end());<br></span><span style="color: #008000;">//</span><span style="color: #008000;">sort函数巧妙地完成了任务，它仅仅调换了原容器中元素值的相对顺序，而不是创建一个新的容器来存储排序后的结果。<br><br></span><span style="color: #008000;">//</span><span style="color: #008000;">排序后求中数</span><span style="color: #008000;"><br></span><span style="color: #000000;">vec_sz&nbsp;mid&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;size</span><span style="color: #000000;">/</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;median;<br>median&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;size&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;(numbers[mid]&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;numbers[mid</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">])</span><span style="color: #000000;">/</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;:&nbsp;numbers[mid];<br><br></span><span style="color: #008000;">//</span><span style="color: #008000;">如果不希望改变向量本身，就可以通过函数参数的方式调用它<br></span><span style="color: #008000;">//</span><span style="color: #008000;">调用函数时整个vector参数都会被复制</span><span style="color: #008000;"><br></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;median(vector</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;vec)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;sort(vec.begin(),&nbsp;vec.end());<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"><br>}</span></div>
<br><br><img src ="http://www.cppblog.com/xuejzt/aggbug/63229.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuejzt/" target="_blank">xuejzt</a> 2008-10-04 14:57 <a href="http://www.cppblog.com/xuejzt/archive/2008/10/04/63229.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>