- 论坛徽章:
- 0
|
帖子都这么长了
我前些日子碰到的关于引用的问题.
现有vector<string> reports;
要把它打包发出去,但是一次打包最多只能发5000个reports.
如果打包函数是 void pack(constant vector<string>& packeds);
那么调用代码应该是这样
vector<string> packed;
if(reports.size()<=5000)
packed.assign(reports);
else
packed.assign(reports.begin(),reports.begin()+5000);
pack(packed); |
这个做法的缺陷是不论reports的大小是否大于5000,都得拷贝一份.
如果打包函数接受指针,void pack(constant vector<string>* packeds);
调用代码可以这么写
vector<string> *p;
vector<string> packed;
if(reports.size()<=5000)
{
p=&reported;
}
else
{
packed.assign(reports.begin(),reports.begin()+5000);
p=&packed;
}
pack(p); |
这样可以避免无谓的拷贝.
但是考虑到vector<string> *p;的代码太怪异了,我放弃了后一种写法.
[ 本帖最后由 lipingtababa 于 2008-12-26 11:23 编辑 ] |
|