STL程序设计实践一:谨慎使用下标运算符

C++ 专栏收录该内容
20 篇文章 0 订阅

 

STL程序设计实践一:谨慎使用下标运算符

   STL中容器占据很重要的地位,部分容器支持像数组一样的下标运算符,使其能向数组一样方便的访问,但也存在同样的限制,如向量和双端队列。所以在应用中要小心使用。举例说明:

   vector<int> nvec(10,7); //定义元素都为7大小为10的整形向量

   int n = nvec[0];       //获取向量的第一个元素

 

deque<int> ndeq(1,0);   //定义一个整形双端队列

   ndeq[0]=7;             //修改元素

   ndeq[1]=8;             //添加元素

   int ni = ndeq[1];       //访问双端队列的第二个元素

   ni = ndeq[2];       //访问双端队列的第三个元素

这段代码编译时没有问题。但是很明显ni最后的值就象数组一样是不确定的,这样不出错是因为STL中容器的内存分配是动态的,它在需要时一次分配了最小的分配单元,在WINDOWS下为4K(这和操作系统有关系),但是如果下标值过大运行时就出非法访问的错误。这是因为越界访问造成的,所以在应用中一定要注意检查是否越界。

STL中映像容器同样支持下标操作,但有着和向量、双端队列不同之处。

map<int,int> d;

d[1]=9;

cout <<d.size()<<endl; //输出为1

int dd= d[2];

cout <<d.size()<<endl; //输出为2

这表示当你用下标操作访问映像时,如果要访问的对象不存在则映像就添加该元素,但其存储对象的值和实现有关。所以应用中不小心出现了此种情况时,很可能导致出现想不到的错误。

文章写的仓促,有错别字或错误请大家多批评指出。谢谢大家的捧场,在下感激不尽,欢迎和大家交流 (----袁凯----)。
  • 0
    点赞
  • 1
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值