【stanford C++】容器II(Collection II)

一、Vector

Vector是用来存储一系列对象的容器类。类似于Java中的ArrayList类型

在所有的编程中,可能是单个最常用的容器类型。

 

当使用容器类型(Stack、Vector等等)时,在调用函数时使用引用传递参数常常是非常有效的,这基于如下原因:

  • 因为当传值传递参数时,拷贝容器类参数将要花费很长的时间,这样降低了程序的效率。

任何使用stack的地方都可以使用Vector来取代,那么为什么我们还要用Stack呢?这主要有如下的原因(注:并不是从性能方面来考虑):

  1. 使用stack让代码更容易阅读
  2. 防止出错

总结:在能使用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中不管什么地方读取元素,花费的时间都是相同的。

 


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值