﻿<?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++博客-真 OO无双之真乱舞书</title><link>http://www.cppblog.com/oomusou/</link><description>写程序是一件很快乐的事 Since 2006/10/22</description><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2026 23:06:43 GMT</lastBuildDate><pubDate>Tue, 14 Apr 2026 23:06:43 GMT</pubDate><ttl>60</ttl><item><title>STL的std::vector和.NET的ArrayList，何者速度较快? </title><link>http://www.cppblog.com/oomusou/archive/2006/11/12/15055.html</link><dc:creator>真 OO无双</dc:creator><author>真 OO无双</author><pubDate>Sun, 12 Nov 2006 03:17:00 GMT</pubDate><guid>http://www.cppblog.com/oomusou/archive/2006/11/12/15055.html</guid><wfw:comment>http://www.cppblog.com/oomusou/comments/15055.html</wfw:comment><comments>http://www.cppblog.com/oomusou/archive/2006/11/12/15055.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/oomusou/comments/commentRss/15055.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/oomusou/services/trackbacks/15055.html</trackback:ping><description><![CDATA[
		<p>之前我发表了<a href="http://www.cnblogs.com/oomusou/archive/2006/10/22/536238.html" target="_blank"><font color="#666666">如何用C++开发ASP.NET</font></a>，很多人怀疑用C++开发ASP.NET有什么好处?执行速度上有任何优势吗?第一个问题将在本篇随笔解答，至于执行速度，我认为既然都是managed code，C++/CLI、C#、VB应该都一样快，但C++/CLI有个特色，就是能在managed code中写unmanaged code，类似C#的unsafe code，假如在C++/CLI中使用unmanaged code，是否能在速度上占便宜呢?我写了以下的程序作测试。<br /><br /><br />为了克服array必须事先宣告大小的不便，STL和.NET都有解决的方式，在STL的container当中，速度最快的就是std::vector，而.NET当中就是ArrayList，所以我想测试在同样的程序中，若使用unmanaged 的std::vector是否会比managed ArrayList快。<br /></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img id="Codehighlighter1_0_171_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_171_Open_Text.style.display='none'; Codehighlighter1_0_171_Closed_Image.style.display='inline'; Codehighlighter1_0_171_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_0_171_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_171_Closed_Text.style.display='none'; Codehighlighter1_0_171_Open_Image.style.display='inline'; Codehighlighter1_0_171_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span id="Codehighlighter1_0_171_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
				<span id="Codehighlighter1_0_171_Open_Text">
						<span style="COLOR: #008000">/*</span>
						<span style="COLOR: #008000"> <br /></span>
						<span style="COLOR: #008080"> 2</span>
						<span style="COLOR: #008000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />(C) OOMusou 2006 </span>
						<span style="COLOR: #008000; TEXT-DECORATION: underline">http://oomusou.cnblogs.com</span>
						<span style="COLOR: #008000">
								<br />
						</span>
						<span style="COLOR: #008080"> 3</span>
						<span style="COLOR: #008000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080"> 4</span>
						<span style="COLOR: #008000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />Filename    : VectorVsArrayList.cpp<br /></span>
						<span style="COLOR: #008080"> 5</span>
						<span style="COLOR: #008000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />Compiler    : Visual C++ 8.0<br /></span>
						<span style="COLOR: #008080"> 6</span>
						<span style="COLOR: #008000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />Description : Demo std::vector and ArrayList in C++/CLI<br /></span>
						<span style="COLOR: #008080"> 7</span>
						<span style="COLOR: #008000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />
						</span>
						<span style="COLOR: #008000">*/</span>
				</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 8</span>
				<span style="COLOR: #000000">
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />#include </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">stdafx.h</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 9</span>
				<span style="COLOR: #000000">
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />#include </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">vector</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">10</span>
				<span style="COLOR: #000000">
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />#include </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">ctime</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">11</span>
				<span style="COLOR: #000000">
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />#include </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">iostream</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">12</span>
				<span style="COLOR: #000000">
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080">13</span>
				<span style="COLOR: #000000">
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">using</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">namespace</span>
				<span style="COLOR: #000000"> System;<br /></span>
				<span style="COLOR: #008080">14</span>
				<span style="COLOR: #000000">
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">using</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">namespace</span>
				<span style="COLOR: #000000"> System::Collections;<br /></span>
				<span style="COLOR: #008080">15</span>
				<span style="COLOR: #000000">
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080">16</span>
				<span style="COLOR: #000000">
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> main()<br /></span>
				<span style="COLOR: #008080">17</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_322_876_Open_Image" onclick="this.style.display='none'; Codehighlighter1_322_876_Open_Text.style.display='none'; Codehighlighter1_322_876_Closed_Image.style.display='inline'; Codehighlighter1_322_876_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_322_876_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_322_876_Closed_Text.style.display='none'; Codehighlighter1_322_876_Open_Image.style.display='inline'; Codehighlighter1_322_876_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span id="Codehighlighter1_322_876_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.cnblogs.com/Images/dot.gif" />
				</span>
				<span id="Codehighlighter1_322_876_Open_Text">
						<span style="COLOR: #000000">{<br /></span>
						<span style="COLOR: #008080">18</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> Use STL std::vector</span>
						<span style="COLOR: #008000">
								<br />
						</span>
						<span style="COLOR: #008080">19</span>
						<span style="COLOR: #008000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    clock_t t1 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> clock();<br /></span>
						<span style="COLOR: #008080">20</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />    <br /></span>
						<span style="COLOR: #008080">21</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />    std::vector</span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000"> ivec;<br /></span>
						<span style="COLOR: #008080">22</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">23</span>
						<span style="COLOR: #000000">
								<img id="Codehighlighter1_447_478_Open_Image" onclick="this.style.display='none'; Codehighlighter1_447_478_Open_Text.style.display='none'; Codehighlighter1_447_478_Closed_Image.style.display='inline'; Codehighlighter1_447_478_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_447_478_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_447_478_Closed_Text.style.display='none'; Codehighlighter1_447_478_Open_Image.style.display='inline'; Codehighlighter1_447_478_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">for</span>
						<span style="COLOR: #000000">(</span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> i</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">; i </span>
						<span style="COLOR: #000000">!=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">10000000</span>
						<span style="COLOR: #000000">; </span>
						<span style="COLOR: #000000">++</span>
						<span style="COLOR: #000000">i) </span>
						<span id="Codehighlighter1_447_478_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.cnblogs.com/Images/dot.gif" />
						</span>
						<span id="Codehighlighter1_447_478_Open_Text">
								<span style="COLOR: #000000">{<br /></span>
								<span style="COLOR: #008080">24</span>
								<span style="COLOR: #000000">
										<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />      ivec.push_back(i);<br /></span>
								<span style="COLOR: #008080">25</span>
								<span style="COLOR: #000000">
										<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">26</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">27</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />    t1 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> clock() </span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000"> t1;<br /></span>
						<span style="COLOR: #008080">28</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">29</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />    std::cout </span>
						<span style="COLOR: #000000">&lt;&lt;</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">std::vector : </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">&lt;&lt;</span>
						<span style="COLOR: #000000"> (</span>
						<span style="COLOR: #0000ff">double</span>
						<span style="COLOR: #000000">)t1</span>
						<span style="COLOR: #000000">/</span>
						<span style="COLOR: #000000">CLOCKS_PER_SEC </span>
						<span style="COLOR: #000000">&lt;&lt;</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> sec</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">&lt;&lt;</span>
						<span style="COLOR: #000000"> std::endl;<br /></span>
						<span style="COLOR: #008080">30</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">31</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">32</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> Use .NET ArrayList</span>
						<span style="COLOR: #008000">
								<br />
						</span>
						<span style="COLOR: #008080">33</span>
						<span style="COLOR: #008000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    clock_t t2 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> clock();<br /></span>
						<span style="COLOR: #008080">34</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">35</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />    ArrayList</span>
						<span style="COLOR: #000000">^</span>
						<span style="COLOR: #000000"> al </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> gcnew ArrayList;<br /></span>
						<span style="COLOR: #008080">36</span>
						<span style="COLOR: #000000">
								<img id="Codehighlighter1_721_745_Open_Image" onclick="this.style.display='none'; Codehighlighter1_721_745_Open_Text.style.display='none'; Codehighlighter1_721_745_Closed_Image.style.display='inline'; Codehighlighter1_721_745_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_721_745_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_721_745_Closed_Text.style.display='none'; Codehighlighter1_721_745_Open_Image.style.display='inline'; Codehighlighter1_721_745_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">for</span>
						<span style="COLOR: #000000">(</span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> i</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">; i </span>
						<span style="COLOR: #000000">!=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">10000000</span>
						<span style="COLOR: #000000">; </span>
						<span style="COLOR: #000000">++</span>
						<span style="COLOR: #000000">i) </span>
						<span id="Codehighlighter1_721_745_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.cnblogs.com/Images/dot.gif" />
						</span>
						<span id="Codehighlighter1_721_745_Open_Text">
								<span style="COLOR: #000000">{<br /></span>
								<span style="COLOR: #008080">37</span>
								<span style="COLOR: #000000">
										<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />      al</span>
								<span style="COLOR: #000000">-&gt;</span>
								<span style="COLOR: #000000">Add(i);<br /></span>
								<span style="COLOR: #008080">38</span>
								<span style="COLOR: #000000">
										<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">39</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />    t2 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> clock() </span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000"> t2;<br /></span>
						<span style="COLOR: #008080">40</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">41</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />    std::cout </span>
						<span style="COLOR: #000000">&lt;&lt;</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">.NET ArrayList : </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">&lt;&lt;</span>
						<span style="COLOR: #000000"> (</span>
						<span style="COLOR: #0000ff">double</span>
						<span style="COLOR: #000000">)t2</span>
						<span style="COLOR: #000000">/</span>
						<span style="COLOR: #000000">CLOCKS_PER_SEC </span>
						<span style="COLOR: #000000">&lt;&lt;</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> sec</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">&lt;&lt;</span>
						<span style="COLOR: #000000"> std::endl;<br /></span>
						<span style="COLOR: #008080">42</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">43</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080">44</span>
						<span style="COLOR: #000000">
								<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
		</div>
		<p>执行结果</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">std::vector : </span>
				<span style="COLOR: #000000">5.618</span>
				<span style="COLOR: #000000"> sec<br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />.NET ArrayList : </span>
				<span style="COLOR: #000000">4.336</span>
				<span style="COLOR: #000000"> sec<br /></span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />請按任意鍵繼續 . . .</span>
		</div>
		<p>
				<br />执行结果令我讶异，我原本预期unmanaged的std::vector应该会比较快，但结果却是managed的ArrayList较快，我觉得可能的原因是，managed的数据放在CLR内，而unmanaged数据放在不同的地方，当unmanaged的std::vector要在managed的执行环境中显示时，还要经过marshaling的动作，所以浪费了一些时间，类似在.NET中使用COM的dll时，也必须经过marshaling，所以速度较慢。<br /><br /><br />回到我第一个问题，用C++开发ASP.NET有什么好处?在这个简单的程序里可以发现，C++/CLI的最大特色，让你可以将managed和unmanaged程序写在一起，同时使用.NET Framework和传统C++的library，如STL、boost，这是C#所做不到的，假如你的工程领域已经有很多library，是用C/C++写的，可能是10几年前的东西，目前根本没有C#版本的library，而你又急需这些library的function开发.NET程序，C++/CLI就很方便了，让你同时拥抱C/C++ library和.NET Framework，这也是Microsoft开发C++/CLI的原因。<br /><br /><br />结论<br />在C++/CLI开发managed code，执行速度不会比C#、VB快，虽然C++/CLI可以开发unmanaged code，但若.NET Framework有相对应的支持时，应先考虑.NET Framework，然后再考虑其它C++自己的library，当然C++/CLI不见的适合所有开发人员，但对于一些开发人员是很方便的。<br /></p>
<img src ="http://www.cppblog.com/oomusou/aggbug/15055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/oomusou/" target="_blank">真 OO无双</a> 2006-11-12 11:17 <a href="http://www.cppblog.com/oomusou/archive/2006/11/12/15055.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在Linux使用Eclipse + CDT开发C/C++程序? </title><link>http://www.cppblog.com/oomusou/archive/2006/11/11/15020.html</link><dc:creator>真 OO无双</dc:creator><author>真 OO无双</author><pubDate>Sat, 11 Nov 2006 12:56:00 GMT</pubDate><guid>http://www.cppblog.com/oomusou/archive/2006/11/11/15020.html</guid><wfw:comment>http://www.cppblog.com/oomusou/comments/15020.html</wfw:comment><comments>http://www.cppblog.com/oomusou/archive/2006/11/11/15020.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.cppblog.com/oomusou/comments/commentRss/15020.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/oomusou/services/trackbacks/15020.html</trackback:ping><description><![CDATA[
		<p>
				<strong style="FONT-SIZE: 14pt">
						<span style="FONT-SIZE: 10pt; COLOR: #993300">A. 为什么要在Linux使用Eclipse开发C/C++程序?</span> </strong>
				<br />
				<br />Linux是一个以C/C++开发为主的平台，无论是Kernel或是Application，主要都使用C/C++开发。传统在Linux下开发程序，是在文字模式下，利用vi等文字编辑器撰写C/C++程序存盘后，在Command line下使用gcc编译，若要debug，则使用gdb。<br /><br /><br /></p>
		<p>这种开发方式生产力并不高，若只是开发学习用的小程序则影响不大，但若要开发大型项目时，程序档案个数众多，需要用project或solution的方式管理；且debug时breakpoint的加入，单步执行，观察变量变化等，都需要更可视化的方式才能够增加生产力；最重要的，由于现在的程序语言皆非常的庞大，又有复杂的函式库，要程序员熟记所有的程序语法和function名称，实在很困难，所以语法提示(Intellisense)的功能就非常重要，这些就必须靠IDE来达成。</p>
		<p>
				<br />在Windows平台上，若要开发C/C++程序，我们有Microsoft Visual Studio、Borland C++ Builder可用，这些都是很好用的IDE，但可惜仅能在Windows下使用，但是在Linux平台呢?基于以下理由，我推荐使用Eclipse开发C/C++程序：<br /><br /><br />1. Eclipse是一个用Java所撰写IDE，因此可跨平台，所以在Linux和Windows平台下皆可使用Eclipse，可降低程序员熟析IDE的学习曲线。<br /><br /><br />2. Eclipse虽然主要拿来开发Java程序，但事实上Eclipse为一个『万用语言』的IDE，只要挂上plugin后，就可以在Eclipse开发各种语言程序，所以我们只要挂上CDT(C/C++ Development Toolkit)后，就可以在Eclipse开发C/C++程序，除此之外，目前的主流程序语言，如C/C++、C#、Java、PHP、Perl、Python、Ruby、Rebol、JavaScript、SQL、XML、UML等，皆可在Eclipse上撰写，所以只要熟析Eclipse的IDE环境，将来若开发其它语言程序，就不用再重新学习IDE环境了。<br /><br /><br />3. 最重要的，Eclipse和CDT是Open Source且完全免费，取得相当容易，事实上Fedora 5已经包含Eclipse和CDT了，虽然预设Fedara 5安装时并没有含Eclipse，只要手动另外加选即可。</p>
		<p>
				<br />
				<strong style="FONT-SIZE: 10pt; COLOR: #993300">B. 如何在Linux下安装Eclipse和CDT?</strong>  <br />i. 由Linux Distribution安装Eclipse，Fedora 5就内含Eclipse和CDT。<br /><br />ii. 手动安装<br />  1. 下载档案<br />    A、 下载JRE(Java Runtime Environment) 。(<a href="http://java.sun.com/javase/downloads/index.jsp" target="_blank"><font color="#666666">http://java.sun.com/javase/downloads/index.jsp</font></a>)<br /><br />    B、 下载Eclipse SDK。(<a href="http://www.eclipse.org/downloads/" target="_blank"><font color="#666666">http://www.eclipse.org/downloads/</font></a>)<br /><br />    C、 下载CDT。(<a href="http://www.eclipse.org/cdt/downloads.php" target="_blank"><font color="#666666">http://www.eclipse.org/cdt/downloads.php</font></a>)<br /><br />  2. 安装<br />    <strong>A、 安装JRE</strong><br />      i. [root@localhost ~]#mkdir /usr/local/java<br /><br />      ii. <span style="COLOR: #008000">(将档案jre-1_5_0_09-linux-i586-rpm.bin下载到/usr/local/java目录下)<br /></span><br />      iii. <span style="COLOR: #008000">(超级用户模式)<br /></span>      [root@localhost ~]#su            <br /><br />      iv.  [root@localhost ~]#cd /usr/java<br /><br />      v. <span style="COLOR: #008000">(将您所下载的档的权限更改为可执行)<br /></span>      [root@localhost java]#chmod a+x jre-1_5_0_09-linux-i586-rpm.bin <br /><br />      vi. <span style="COLOR: #008000">(启动安装过程) </span><br />      [root@localhost java]#./jre-1_5_0_09-linux-i586-rpm.bin<br />      <span style="COLOR: #008000">(此时将显示二进制许可协议，按控格显示下一页，读完许可协议后，输入 『yes』继续安装。此时会将解压缩，产生jre-1_5_0_9-linux-i586.rpm)<br /><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/JRE1.jpg" border="0" /><br /><br /></span>      vii. <span style="COLOR: #008000">(安装jre-1_5_0_9-linux-i586.rpm)</span><br />      [root@localhost java]#rpm –ivh jre-1_5_0_9-linux-i586.rpm <br /><img height="235" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/JRE2.jpg" width="574" border="0" /><br />      <span style="COLOR: #008000">(此时会将JRE装在/usr/java/jre1.5.0_09目录下)<br /></span><br />      viii. <span style="COLOR: #008000">(设定环境变量，让Linux能找到JRE)<br /></span>      [root@localhost java]#vi /etc/profile<br />      <span style="COLOR: #008000">(将以下内容加入在档案后面)</span></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">PATH</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">$PATH:</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">usr</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">java</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">jre1.</span>
				<span style="COLOR: #000000">5</span>
				<span style="COLOR: #000000">.0_09</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">bin<br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />export JAVA_HOME</span>
				<span style="COLOR: #000000">=/</span>
				<span style="COLOR: #000000">usr</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">java</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">jre1.</span>
				<span style="COLOR: #000000">5</span>
				<span style="COLOR: #000000">.0_09<br /></span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />export CLASSPATH</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">$JAVA_HOME</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">lib:.</span>
		</div>
		<p>      <span style="COLOR: #008000">(存盘后，重新启动Linux)<br /><br /></span>      ix. <span style="COLOR: #008000">(测试Java是否安装成功)<br /></span>      [root@localhost ~]#java –version<br /><img height="164" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/JRE3.jpg" width="665" border="0" /><br /><br />   <strong> B、 安装Eclipse SDK</strong><br />      i. <span style="COLOR: #008000">(将档案eclipse-SDK-3.2.1-linux-gtk.tar.gz下载到桌面)<br /><br /></span>      ii. [root@localhost ~]#cd /usr/local<br /><br />      iii. [root@localhost local]#cp ~Desktop/eclipse-SDK-3.2.1-linux-gtk.tar.gz .    <br /><br />      iv.<span style="COLOR: #008000"> (将eclipse-SDK-3.2.1-linux-gtk.tar.gz解压缩)</span><br />      [root@localhost local]#tar –zxvf eclipse-SDK-3.2.1-linux-gtk.tar.gz<br /><br />      v. [root@localhost local]#cd eclipse<br /><br />      vi. <span style="COLOR: #008000">(执行Eclipse)<br /></span>      [root@localhost eclipse]#./eclipse<br /><br />      vii. <span style="COLOR: #008000">(Select a workspace)<br /></span>      <span style="COLOR: #008000">(将Use this as the default and do not ask again打勾，以后就不会出现这个窗口)<br /><img height="319" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/Eclipse1.jpg" width="704" border="0" /><br /><br />      (第一次执行Eclipse会出现此error，因为没有任何Eclipse设定档，所以无法读取，第二次执行Eclipse就无此错误讯息，按OK继续。)<br /><img height="184" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/Eclipse2.jpg" width="701" border="0" /><br /><br />      (Eclipse主画面)<br /><img height="549" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/Eclipse3.jpg" width="800" border="0" /><br /><br /></span>    <strong>C、 安装CDT</strong><br />      i. <span style="COLOR: #008000">(将档案org.eclipse.cdt-3.1.1-linux.x86.tar.gz下载到桌面)</span><br /><br />      ii. [root@localhost ~]#cp ~/Desktop/org.eclipse.cdt-3.1.1-linux.x86.tar.gz . <br /><br />      iii. <span style="COLOR: #008000">(将org.eclipse.cdt-3.1.1-linux.x86.tar.gz解压缩)</span><br />      [root@localhost ~]#tar –zxvf org.eclipse.cdt-3.1.1-linux.x86.tar.gz<br />      <span style="COLOR: #008000">(档案将解到~/eclipse目录下)</span><br /><br />      iv. <span style="COLOR: #008000">(安装CDT plugin)<br /></span>      [root@localhost ~]cp –r eclipse/plugins/. /usr/local/eclipse/plugins/ <br /><br />      v. <span style="COLOR: #008000">(启动Eclipse，多了C和C++ Project支持)</span> <br />    <img height="499" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/CDT1.jpg" width="700" border="0" /><br /><br /><span>C. <strong>如何在Eclipse上开发C/C++程序?</strong></span><br /><strong>i. 建立Hello Word project</strong><br />  1. 建立C/C++ project<br /><img height="156" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/HelloWorld1.jpg" width="468" border="0" /><br /><br />  2. 选择Managed Make C++ Project(若选择Managed Make C++ Project，Eclipse会自动为我们建立make file；若选择Standard Make C++ Project，则必须自己写make file。)<br /><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/HelloWorld2.jpg" border="0" /><br /><br />  3. 输入Project name<br /><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/HelloWorld3.jpg" border="0" /><br /><br />  4. 选择Project类型(如执行档或Library，这里选择执行档即可)<br /><img height="498" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/HelloWorld4.jpg" width="700" border="0" /><br /><br />  5. 额外的设定<br /><img height="499" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/HelloWorld5.jpg" width="700" border="0" /><br /><br />  6. Open Associated Perspective?(选Yes继续)<br /><img height="498" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/HelloWorld6.jpg" width="699" border="0" /><br /><br />  7. 建立C++ Source File<br /><img height="308" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/HelloWorld7.jpg" width="577" border="0" /><br /><br />8. 输入C++ Source File檔名<br /><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/HelloWorld8.jpg" border="0" /><br /><br />  9. 输入C++程序代码<br /><img height="550" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/HelloWorld9.jpg" width="799" border="0" /><br /><br />  10. 执行程序(显示在下方的Console区)<br /><img height="548" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/HelloWorld10.jpg" width="799" border="0" /><br /><br /><strong>ii. 如何在Eclipse CDT中Debug C/C++程序?</strong><br />1. 在Eclipse中Debug，就如同在一般IDE中Debug一样，只要在程序代码的左方按两下，就可加入breakpoint。<br /><img height="547" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/Debug1.jpg" width="799" border="0" /><br /><br />  2. 启动Debug<br /><img height="547" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/Debug2.jpg" width="798" border="0" /><br /><br />  3. Debug设定，按Debug开始Debug<br /><img height="550" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/Debug3.jpg" width="800" border="0" /><br /><br />  4. 单步执行，显示变量变化<br /><img height="548" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/Debug4.jpg" width="798" border="0" /><br /><br /><span style="FONT-SIZE: 12pt; COLOR: #993300">E. 结论<br /></span>Eclipse为Linux在C/C++开发提供一个完善的IDE环境，事实上，以我用过众多IDE的经验，除了Visual Studio最方便外，Eclipse的好用也直追Visual Studio，并且超越Borland C++ Builder及Dev C++，虽然安装上比较麻烦，但只要依照本文介绍一步一步的设定，就一定可完成Eclipse设定，若想要在Windows平台使用gcc compiler，也建议使用Eclipse + CDT + MinGW的组合。<br /><br />See Also <br /><a href="http://www.cnblogs.com/oomusou/archive/2006/11/10/557066.html"><font color="#666666">[转载] Eclipse + CDT + MinGW 安装方法</font></a></p>
		<p>Reference <br />1. 为Linux手动下载和安装Java Runtime Enrironment(JRE)的说明<br />(<a href="http://www.java.com/zh_CN/download/help/5000010500.xml" target="_blank"><font color="#666666">http://www.java.com/zh_CN/download/help/5000010500.xml</font></a>)<br />2. Eclipse 3.0 CDT on Linux<br />(<a href="http://www.autexier.de/jmau/dev/CDT/cdt.html" target="_blank"><font color="#666666">http://www.autexier.de/jmau/dev/CDT/cdt.html</font></a>)<br /></p>
<img src ="http://www.cppblog.com/oomusou/aggbug/15020.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/oomusou/" target="_blank">真 OO无双</a> 2006-11-11 20:56 <a href="http://www.cppblog.com/oomusou/archive/2006/11/11/15020.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何用C++开发ASP.NET? </title><link>http://www.cppblog.com/oomusou/archive/2006/10/22/14002.html</link><dc:creator>真 OO无双</dc:creator><author>真 OO无双</author><pubDate>Sun, 22 Oct 2006 04:08:00 GMT</pubDate><guid>http://www.cppblog.com/oomusou/archive/2006/10/22/14002.html</guid><wfw:comment>http://www.cppblog.com/oomusou/comments/14002.html</wfw:comment><comments>http://www.cppblog.com/oomusou/archive/2006/10/22/14002.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/oomusou/comments/commentRss/14002.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/oomusou/services/trackbacks/14002.html</trackback:ping><description><![CDATA[在Visual Studio .NET 2002刚出来时，我就曾经听过同事说过他用C++写过ASP.NET，不过由于当时才刚刚学C#，还不会C++，所以也没问他是怎么写的，一直到最近开始学C++，发现在Visual Studio 2005可以用C++/CLI开发Windows Form，但却无法开发ASP.NET，实在令人遗憾，在网络上也只在Code Project谈到在Visual Studio .NET 2002下用Managed C++写ASP.NET(<a href="http://www.codeproject.com/managedcpp/helloworldmc.asp" target="_blank"><font color="#666666">ASP.NET with Managed C++</font></a>)，但Managed C++和C++/CLI的语法不太一样，原本的范例无法compile成功，经过一段研究之后，终于找到了用C++/CLI撰写ASP.NET的方式。在这篇文章中，我将一步步的demo如何用C++/CLI开发ASP.NET程序。 <br /><br /><img height="273" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/cppHelloWorld1.jpg" width="368" border="0" /> <br /><br />首先，建立一个新的Web Site，由于Visual Studio 2005在ASP.NET没支持C++，所以建立Web Site时，先随便选一个语言建立。<br /><br /><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/cppHelloWorld23.jpg" border="0" /><br /><br />建立一个Web Form名为HelloWorld.aspx，请不要选择Place code in separate file，这样Visual Studio 2005会将Event Handler放在aspx文件中，可以让aspx.cpp省掉event宣告的程序。<br /><br /><img height="118" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/cppHelloWorld33.jpg" width="549" border="0" /><br /><br />使用Web Form Designer做出以下的介面。<br /><br /><img height="191" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/cppHelloWorld4.jpg" width="267" border="0" /><br /><br />在Page Directive部分，将Language=”C#”删除，加上AutoEventWireup="true" Inherits="HelloWorld"，HelloWord为C++的Class名称。也要将&lt;script runat="server"&gt;&lt;/script&gt;部分删除。<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_2_53_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2_53_Open_Text.style.display='none'; Codehighlighter1_2_53_Closed_Image.style.display='inline'; Codehighlighter1_2_53_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_2_53_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2_53_Closed_Text.style.display='none'; Codehighlighter1_2_53_Open_Image.style.display='inline'; Codehighlighter1_2_53_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span><span id="Codehighlighter1_2_53_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_2_53_Open_Text"><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">@ Page AutoEventWireup</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">true</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> Inherits</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">HelloWorld</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html </span><span style="COLOR: #ff0000">xmlns</span><span style="COLOR: #0000ff">="http://www.w3.org/1999/xhtml"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">head </span><span style="COLOR: #ff0000">runat</span><span style="COLOR: #0000ff">="server"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Untitled Page</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">form </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="form1"</span><span style="COLOR: #ff0000"> runat</span><span style="COLOR: #0000ff">="server"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />      Using C++/CLI in ASP.NET</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">br </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">br </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">asp:Button </span><span style="COLOR: #ff0000">ID</span><span style="COLOR: #0000ff">="Button1"</span><span style="COLOR: #ff0000"> runat</span><span style="COLOR: #0000ff">="server"</span><span style="COLOR: #ff0000"> OnClick</span><span style="COLOR: #0000ff">="Button1_Click"</span><span style="COLOR: #ff0000"> Text</span><span style="COLOR: #0000ff">="Button"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">asp:Label </span><span style="COLOR: #ff0000">ID</span><span style="COLOR: #0000ff">="Label1"</span><span style="COLOR: #ff0000"> runat</span><span style="COLOR: #0000ff">="server"</span><span style="COLOR: #ff0000"> Text</span><span style="COLOR: #0000ff">="Label"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">asp:Label</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">form</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span></div><br />建立C++ Project，左侧选择CLR，此为.NET platform的Project，右侧选择CLR Empty Project即可，切记不要选择Class Library，这样会多出很多我们不需要的档案，而且最后我们也不会用Visual Studio 2005来compile，会使用Command Prompt的方式compile。<br /><br /><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/cppHelloWorld6.jpg" border="0" /><br /><br />建立HelloWorld.aspx.cpp。<br /><br /><img height="527" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/cppHelloWorld71.jpg" width="787" border="0" /><br /><br /><br />加入C++/CLI程序。C++/CLI对ANSI C++做了些扩充，为了和C++内建的型别与Class做区别，Managed的Class需加上ref modifier，而Managed的Object要加上^。最重要的，IDE支援Intellisense方式写ASP.NET。<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">#</span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">system.dll</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />#</span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">mscorlib.dll</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />#</span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">system.web.dll</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000"> System;<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000"> System::Web::UI::WebControls;<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img id="Codehighlighter1_197_365_Open_Image" onclick="this.style.display='none'; Codehighlighter1_197_365_Open_Text.style.display='none'; Codehighlighter1_197_365_Closed_Image.style.display='inline'; Codehighlighter1_197_365_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_197_365_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_197_365_Closed_Text.style.display='none'; Codehighlighter1_197_365_Open_Image.style.display='inline'; Codehighlighter1_197_365_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">ref</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> HelloWorld : </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> System::Web::UI::Page </span><span id="Codehighlighter1_197_365_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_197_365_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />  Button</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000"> Button1;<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />  Label</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">  Label1;<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img id="Codehighlighter1_307_363_Open_Image" onclick="this.style.display='none'; Codehighlighter1_307_363_Open_Text.style.display='none'; Codehighlighter1_307_363_Closed_Image.style.display='inline'; Codehighlighter1_307_363_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_307_363_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_307_363_Closed_Text.style.display='none'; Codehighlighter1_307_363_Open_Image.style.display='inline'; Codehighlighter1_307_363_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> Button1_Click(Object</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000"> sender, EventArgs</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000"> e) </span><span id="Codehighlighter1_307_363_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_307_363_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Label1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Text </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Hello World</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000">;</span></div><br />使用Visual Studio 2005 Command Prompt編譯C++/CLI。<br /><br /> <img height="183" alt="" src="http://www.cnblogs.com/images/cnblogs_com/oomusou/cppHelloWorld8.jpg" width="699" border="0" /><br /><br />使用以下的語法編譯C++/CLI。<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">cl </span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">clr HelloWorld.aspx.cpp </span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">link </span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">dll </span><span style="COLOR: #000000">/</span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000">:HelloWorld.dll</span></div><p><br />最后只要将HelloWorld.aspx放到c:\Inetpub\wwwroot\下，HelloWorld.dll放到c:\Inetpub\wwwroot\bin\下，就完成deployment。<br /><br /><br />结论 <br /><br />很多人说C++无法开发ASP.NET，ANSI C++的确不能，但C++/CLI则可以，事实上，任何.NET下的语言都可以开发ASP.NET，虽然Visual Studio 2005工具不见的支持，但只要透过一些小技巧，你依然可以用妳喜欢的.NET语言开发ASP.NET。<br /><br /><br />Reference<br /><a href="http://www.codeproject.com/managedcpp/helloworldmc.asp" target="_blank"><font color="#666666">ASP.NET with Managed C++</font></a> , Soliant, The  code project.</p><img src ="http://www.cppblog.com/oomusou/aggbug/14002.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/oomusou/" target="_blank">真 OO无双</a> 2006-10-22 12:08 <a href="http://www.cppblog.com/oomusou/archive/2006/10/22/14002.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>