一、Vector
Vector是用来存储一系列对象的容器类。类似于Java中的ArrayList类型
在所有的编程中,可能是单个最常用的容器类型。
当使用容器类型(Stack、Vector等等)时,在调用函数时使用引用传递参数常常是非常有效的,这基于如下原因:
- 因为当传值传递参数时,拷贝容器类参数将要花费很长的时间,这样降低了程序的效率。
任何使用stack的地方都可以使用Vector来取代,那么为什么我们还要用Stack呢?这主要有如下的原因(注:并不是从性能方面来考虑):
- 使用stack让代码更容易阅读
- 防止出错
总结:在能使用stack的时候,尽量使用stack,否则使用vector。
二、Grid
Grid类型用于存储二维的数据(像矩阵、拼字游戏板等)。
可以通过如下形式指定大小来构建Grid类型,
Grid<Type> g(numRows, numCols);
可以通过如下方法来访问Grid类型变量中的各个元素
g[rows][cols]
任何使用Grid的地方都可以通过Vector<Vector >来替代,其中Vector<Vector >的内部Vector的长度保持一致。那么为什么还要使用Grid?主要是因为:
- 更容易阅读
- 更少可能产生错误
Vector类型性能:
当在Vector 变量中进行加入/删除操作时,对性能有很大的影响。
Vector<int> myVector;
for(int i = 0; i < 1000; i++)
{
myVector[i] = 0
}
VS
Vector<int> myVector;
for(int i = 0; i < 1000; i++)
{
myVector.insert(0, i);
}
why?
当从Vector的开头处删除(或插入)一个元素时,Vector中所有其他的元素必须进行后移。这将有很大的性能影响。
从Vector中不管什么地方读取元素,花费的时间都是相同的。