<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="C++与C#对常用数据结构封装的对比（STL vs System.Collections.Gener" id="card1">
<p> 游客</p><p>
标题:C++与C#对常用数据结构封装的对比（STL vs System.Collections.Gener<br/>
正文:<br/>
DotNet下的泛型容器类封装在System.Collections.Generic，使用的十分广泛。C++则靠STL实现了泛型容器与算法。下面对二者做一个对比，只谈用法，不深究原理。对比的内容有数组、链表和字典三种结构。一、数组C#使用List&amp;lt;T&amp;gt;，C++用的是std::vector&amp;lt;T&amp;gt;，内部实现都是数组，也就是一块连续的内存区域，插入、删除操作慢，随机访问速度快。操作C++(STL)C#(.net)说明包含#include &amp;lt;vector&amp;gt;using System.Collections.Generic;C++中也可以using namespace std;声明std::vector&amp;lt;int&amp;gt; array;List&amp;lt;int&amp;gt; array = new List&amp;lt;int&amp;gt;();以int型数据为例迭代器声明std::vector&amp;lt;int&amp;gt;::iterator iter=array.begin();List&amp;lt;int&amp;gt;.Enumerator iter = array.GetEnumerator();C#中迭代器不常用插入array.push_back(4); array.insert(iter,51);array.Add(4); array.Insert(2, 51);迭代器操作后失效查询int val=array[0]; val=array.at(1);  //进行下标检测int val = array[0];<br/>array.Contains(5); //是否包含5 array.IndexOf(1);  //元素1的下标 删除array.pop_back();  //删除最后的元素 array.erase(iter);  //删除iter位置的元素 array.clear();array.Remove(1);  //删除&quot;1&amp;rdquo;这个元素array.RemoveAt(0);  //删除0号元素 array.Clear();迭代器操作后失效大小array.empty(); array.capacity();&amp;nb<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=442&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=442&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=442&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=442&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=442&amp;Page=4">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=442">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=442">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>