作为一个愚蠢的例子,假设我有一个函数int f(vector<int> v)
,由于某种原因,我需要v
在f
. 与其将辅助函数放在其他地方(这可能会增加混乱并损害可读性),不如做这样的事情有哪些优点和缺点(效率、可读性、可维护性等):
int f(vector<int> v)
{
auto make_unique = [](vector<int> &v)
{
sort(begin(v), end(v));
auto unique_end = unique(begin(v), end(v));
v.erase(unique_end, end(v));
};
auto print_vector = [](vector<int> const &v)
{
copy(begin(v), end(v), ostream_iterator<int>(cout, " "));
cout << endl;
};
make_unique (v);
print_vector(v);
// And then the function uses these helpers a few more times to justify making
// functions...
}
还是有一些首选的选择?