C++标准库---容器作为形参?
来源:互联网 发布:js让一个按钮不可点击 编辑:程序博客网 时间:2024/06/07 06:31
通常,函数不应该有 vector 或其他标准库容器类型的形参。调用含有普通的非引用 vector 形参的函数将会复制 vector 的每一个元素。因此,调用含有普通的非引用vector作为形参的函数,无论效率还是资源利用率,都是极大的浪费。
从避免复制 vector 的角度出发,应考虑将形参声明为引用类型。但是,事实上,C++ 程序员倾向于通过传递指向容器中需要处理的元素的迭代器来传递容器:
考虑下面两个容器的传递:
#include<iostream>#include<vector>using namespace std;void print_vector_pos(vector<int>::const_iterator beg,vector<int>::const_iterator end){while(beg!=end){cout<<*beg++;if(beg!=end){cout<<" ";}}cout<<endl;}void print_vector_copy(vector<int> coll){vector<int>::iterator pos;for(pos=coll.begin();pos!=coll.end();){cout<<*pos++;if(pos!=coll.end()){cout<<" ";}}cout<<endl;}int main(){int a[]={11,0,2,4,9,11,23,123,231,45,41,56};vector<int> coll(a,a+12);//coll(a[0],a[0]+5);//注意区别print_vector_copy(coll);print_vector_pos(coll.begin(),coll.end());system("pause");return 0;}
直接传递迭代器肯定优于传递一个容器的副本。之前在做毕业设计时,就传递了容器作为形参,估计得改了。。
0 0
- C++标准库---容器作为形参?
- [C++]标准库类型容器
- C++Primer——标准库vector(容器)类型
- C++中的标准模板库STL及容器
- auto_ptr智能指针不能作为STL标准容器的元素
- STL之容器作为形参的传递
- C++(笔记)容器(vector)作为函数参数如何传参
- [C/C++标准库]_[中级]_[使用stringstream作为内存流读取]
- misra c规范作为工业标准的C编程规范
- 标准模版库中的容器
- C++标准容器模板库
- C++ 标准库顺序容器
- C++ 标准库关联容器
- C++标准模板库------容器
- C++标准库—容器
- 标准模板库STL-容器
- STL标准库Deque容器
- C++标准库:std_map作为一个…
- centos系统各个目录说明
- Unity3D研究院之IOS Android支持中文与本地文件的读取写
- Request和Response对象
- 关于《MAC和树莓派实现文件共享和TM备份》的二三事
- Android提高 - 图片一些常用处理方法
- C++标准库---容器作为形参?
- MariaDB 的主从复制以及建立主从复制后第一条语句就出错的原因
- mark hdu1501
- RFID系统安全隐患解决方案优缺点的分析
- MAC 连接 android 设备
- JavaScript实现数据验证
- Windows平台实现一种好看又好用的UI规划
- 申请TexturePacker免费注册码(TP:68D951F8)
- hdu-5213(莫队算法)